Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
1

С чего начать писать игру?

08.07.2012, 10:25. Показов 4132. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С чего начать писать игру?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2012, 10:25
Ответы с готовыми решениями:

Написать простенькую 2д игру но не знаю с чего начать
я студент заканчиваю 2 курс института захотелось написать простенькую 2д игру но не знаю с чего...

С чего начать писать свою браузерную игру?
Привет всем! Появилась классная идею о создании своей брайзерной игры! Идея супер все придумал...

С чего начать писать игру или как пишутся игры?
Мой курсовой проект - игра по типу BomberMan. Посоветуйте книгу, где пишется про создание игр...

С чего начать писать игру "Шарики"?
В общем задали в универе типа курсовой. Там есть простые задания, но мне не охото их делать. Мне бы...

17
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
08.07.2012, 10:26 2

Не по теме:

Цитата Сообщение от duckhunter Посмотреть сообщение
С чего начать писать игру?
ну точно не с вопросов на форуме


с документированого плана
1
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
08.07.2012, 11:06  [ТС] 3
ок я постараюсь придумать план.
0
637 / 415 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
08.07.2012, 12:47 4
тз -> выбор платформы -> язык программирования)
1
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
08.07.2012, 14:07 5
Не-не-не, лучше с вопросов "зачем?" и "готов ли довести до конца?".
2
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
08.07.2012, 15:58  [ТС] 6
C++
1
2
3
4
// План.
// Название игры - Буквалиц (дальний родственник Коло-б(о)ка)
// Коммандная строка, управление wasd - символ бегает по лабиринту, собирает точки, убегает от других букв.
// Надо собрать все точки.
тз -> выбор платформы -> язык программирования)
что такое ТЗ? язык незнаю какой наверное который си.

Не-не-не, лучше с вопросов "зачем?" и "готов ли довести до конца?".
просто так, захотелось. да нет, наверное, смогу.
0
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
09.07.2012, 00:55 7
Цитата Сообщение от duckhunter Посмотреть сообщение
просто так, захотелось. да нет, наверное, смогу.
Можешь начинать писать без всякого ТЗ: если планируется что-то сложнее тетриса, с вероятностью близкой к единице через месяц всё равно забросишь. Первые мегапроекты невзлетают с завидным постоянством.
1
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
09.07.2012, 05:48 8
duckhunter
Игра в консоли?
Я написал змейку в консоли. Если поймете, то легко сможете переделать на свою игру.
Вложения
Тип файла: rar Snake.rar (3.22 Мб, 97 просмотров)
1
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
09.07.2012, 19:57  [ТС] 9
почему когда я рисую пробную карту она при прорисовке мелькает?

Добавлено через 2 часа 22 минуты
Вот код, посмотрите. Как сделать чтобы не мелькало то что рисуется в консоли?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <fstream>
#include "console.h"
 
// Размер карты
const int map_x = 80;
const int map_y = 30;
 
const int TextColorWhite    = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY;
const int TextColorYellow   = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY;
 
// Карта
int map[map_x][map_y] = {0};
// Положение игрока
int px = 0;
int py = 0;
 
void save_map()
{
    std::fstream map_file("map.map", std::ios::out | std::ios::binary);
    map_file.write(reinterpret_cast<char*>(map), sizeof(map));
    map_file.close();
}
 
void load_map()
{
    std::fstream map_file("map.map", std::ios::in | std::ios::binary);
    map_file.read(reinterpret_cast<char*>(map), sizeof(map));
    map_file.close();
}
 
 
void randomize_map() 
{
    srand(NULL);
    for (int y=0; y < map_y; ++y) 
    {
        for (int x=0; x < map_x; ++x) 
        {
            map[x][y] = rand()%2;
        }
    }
}
 
void draw_map() 
{
    for (int y=0; y < map_y; ++y) 
    {
        for (int x=0; x < map_x; ++x) 
        {
            ccSetPos(x,y);
            // Стены
            if (map[x][y] == 'X')
                printf("X");
                //std::cout << 'X';
            else
                printf(" ");
                //std::cout << ' ';
            
            // Персонаж
            if (map[px][py] != 0)
            if (px == x && py == y)
                printf("C");
                //std::cout << 'C';
        }
    }
    //std::cout << std::endl;
}
 
void readTestMap()
{
    std::ifstream mapFile( "testmap.txt", std::ios::in );
    memset(map, 0, sizeof(map));
    char mapBlock;
    char mapBlockLine[80];
    std::streamsize len;
    int mapXLen = 0;
    int mapYLen = 0;
    
    while (mapFile.eof() == false) 
    {
        mapFile >> mapBlock;
        mapFile.getline(mapBlockLine, 80);
        mapXLen = strlen(mapBlockLine);
        std::cout << mapBlockLine << std::endl;
        for (int x=0; x <= mapXLen; x++)
        {
            map[x][mapYLen] = mapBlockLine[x];
        }
        //if (mapBlock == '\n') std::cout << std::endl;
        //std::cout << mapBlock;
        //Sleep(1);
        mapYLen++;
    }
 
    mapFile.close();
}
 
int main() 
{
    //memset( map,0, sizeof(map));
    ccInit(); // Установки консоли
    randomize_map();
    readTestMap();
    system("pause");
    while(true) 
    {
        ccSetPos(0,0);
        Sleep(100);
        system("cls");
        
        /*
        ccSetPos(13,10);
        ccSetTextColor(TextColorYellow);
        printf("\xC9\xCB\xBB");
        ccSetPos(0,0);
        ccSetTextColor(TextColorWhite);
        */
        
        draw_map();
        if (GetAsyncKeyState(VK_ESCAPE) != 0) break;    
        if (GetAsyncKeyState('W') != 0) py+=1;
        if (GetAsyncKeyState('S') != 0) py-=1;
        if (GetAsyncKeyState('A') != 0) px-=1;
        if (GetAsyncKeyState('D') != 0) px+=1;
        if (GetAsyncKeyState('1') != 0) save_map();
        if (GetAsyncKeyState('2') != 0) load_map();
    }
 
    system("pause");
    return 0;
}
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
10.07.2012, 07:26 10
Чтобы не мелькало, надо либо использовать двойную буферизацию, либо как у меня в змейке сделать(выводить только измененные символы на экран).

Добавлено через 8 часов 13 минут
В консоли можно сделать двойную буферизацию. Я пробовал, но была проблема с кодировкой символов или я что-то не то делал.
1
637 / 415 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
10.07.2012, 20:28 11
тз - тех задание, или список что нужно сделать в программе, игре
1
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
10.07.2012, 21:11  [ТС] 12
осилил сегодня me3 все благополучно вымерли. после чего решил заняться своим таблофейсом т.е покодить немножко, я кстати думаю над ребрендингом названия, т.к. нашел в списке Ansi символов "рожицу")
поэтому наверное будет - Рожамен )) так же разобрался с мерцанием, и как мне советовали не стал все перерисовывать, а обновляю только то что нужно. спасибо. ну и рез-тат на текущий момент выглядит так. это конечно же не предел мечтаний, но уже что-то )))
Миниатюры
С чего начать писать игру?  
Вложения
Тип файла: rar screenmap01.rar (42.1 Кб, 16 просмотров)
0
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
11.07.2012, 12:31  [ТС] 13
глянул в таблице симвоов asci есть линии и углы, решил их использовать, обновил прорисовку уровня.
в след. шагом наверное будет добавленеи точек которые будет собирать игрок, ну а там и монстры не за горами. вот думаю как их заставить двигаться?
Миниатюры
С чего начать писать игру?  
Вложения
Тип файла: rar screenmap01 v02.rar (72.1 Кб, 11 просмотров)
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
11.07.2012, 16:38 14
Цитата Сообщение от duckhunter Посмотреть сообщение
вот думаю как их заставить двигаться?
Сделать цикл, в котором будет обновляться игра. А обновляться игра будет через какой-то определенный интервал времени.
1
2 / 2 / 0
Регистрация: 08.07.2012
Сообщений: 14
12.07.2012, 10:34  [ТС] 15
и так я приступил править мозги) ... будущим монстрам разумеется.
но вот бяда( пробный AI гоняет единственного монстра в радиусе одной клетки от места респа.
вот код ai. по идее я рассчитывал на нечто вроде броуновского движения(беспорядочного) а не на топтание на месте(

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void draw_enemies() 
{
    // для краткости текущий выбранный в цикле монстр будет "е"
    struct enemy e = {0};
    // рандомизация псевдослучайности
    srand(time(NULL));
    // перебор всех монстров на карте
    for (int i=0; i < current_enemy_count; i++)
    {
        // текущий монстр будет е
        e = enemies[i];
        // кол-во попыток выборки пути
        int find_path_count = 0;
        
        // если монстр активен
        if (e.is_active == true) 
        {
// метка для повторной генерации направления
generate_dir_again:
            // генерация вектора -1..1
            int dx = -1 + rand()%2;
            int dy = -1 + rand()%2;
            // если позиция + вектор занята повторно выбирает вектор до 10 раз.
            if (is_busy(e.x + dx, e.y + dy) == true)
            {
                find_path_count++;
                if (find_path_count < 10) goto generate_dir_again;
            }
            // если позиция не занята
            // прибавляем вектор направления к тек. позиции
            e.x += dx;
            e.y += dy;
            // рисуем монстра красным цветом
            ccSetPos(e.x, e.y);
            ccSetTextColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
            printf("\x02");
        }
    }
}
как его заставить ходить дальше?
0
ДенчикХисамов
21.06.2014, 23:46 16
можно здесь посмотреть http://unity3dforge.com/ Создание игр еще никогда не было настолько доступным и простым. Встроенные в среду разработки движка программные средства позволяют на лету тестировать производительность приложения, скорость отрисовки графики и испольлзование приложением памяти.
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
26.06.2014, 22:26 17
duckhunter, бросайте это дело, ничего не получится, услышав СИ и увидев что у вас ни одной структуры ни одного класса можно сказать что ничего не получится, почитайте ещё литературы, эдак томика 2 - 3, ну и по праграмируйте хоть несколько лет
0
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
27.06.2014, 07:16 18
Да человек уж почти два года на форуме не появлялся. Просто некропостер с рекламой старую тему апнул.
0
27.06.2014, 07:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2014, 07:16
Помогаю со студенческими работами здесь

С чего начать писать программу
Добрый день, не могу разобраться с чего приступить к написанию приложения,в Microsoft Visual C++...

С чего начать писать игры
Здравствуйте, с чего начать изучать новичку, что бы разрабатывать самостоятельно флеш игры? ...

Не знаю с чего начать писать
Ребята! Доброго времени суток. В общем дали задание написать программу точней web-приложение...

С чего начинать писать сетевую игру?
Доброго времени суток ! Сижу и думаю с чего начинать писать сетевую игру. Хочу именно начать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru