Форум программистов, компьютерный форум CyberForum.ru

Игры на C++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:35     Игры на C++ #1
Вот мне интерессно, стоит ли учиться создавать игры на С++?
Или всё это ерунда и лучше игры создавать на тех же Delphi, WinAPI и т.д.?
А то я хочу попытаться сделать какую-то игрушку консольную
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 21:35     Игры на C++
Посмотрите здесь:

программа игры на С++ C++
Инициализация игры... C++
Игры на С++ C++
C++ Игры
Исходник игры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:37     Игры на C++ #2
Я покер писал консольный против компа
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:37  [ТС]     Игры на C++ #3
Интерессно)
Не могли бы вы выложить исходник? Если есть
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:38     Игры на C++ #4
Есть, но я учусь по этому показать стыдно \
Да и осталась только функция тасования колоды и функция распознавания комбинаций
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
31.07.2013, 21:39     Игры на C++ #5
Цитата Сообщение от MousePro Посмотреть сообщение
Есть, но я учусь по этому показать стыдно
Ну Вы же не говорите, что оно написано профессионально так что можете показывать. Заодно, может кто и покажет на недочеты
SummerRain
31.07.2013, 21:40
  #6

Не по теме:

Я WOW написал консольный, но я учусь, поэтому показать стыдно

Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:40  [ТС]     Игры на C++ #7
В личку тогда, да и что тут такого?Это наоборот похвально, когда человек старается
Даже если игра и самая простая, это всё равно остается игрой, а мне всего лишь нужен пример, не важно сложный или нет
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 21:52     Игры на C++ #8
я стараюсь сделать что-то наподобие Rougelike с автогенерацией карты, генерацией позиций мобов, и прочими РПГ-шными плюшками
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:55  [ТС]     Игры на C++ #9
Я сам никогда игры не писал, и хотелось бы узнать структуру и т.д.
А то я вообще ничего не знаю в написании игр на С++
Может какая-то статья есть? А то я в гугле искал, ничего толкового не нашел
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:58     Игры на C++ #10
У меня остался не весь код, но самое трудное ( для меня ) осталось )))

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
#include "iostream"
#include <stdlib.h>     
#include <time.h>  
#include <ctype.h>
#include <string.h>
void task(int [] [13]);
void dispensation ( int [][13],int [][2],int[][2],int[][4],int *);
void sort(int [][4]);
void hand(int [][2],int[][4]);
int hands(int [][4]);
 
 
 
int main()
{
int combo=0;
 
    setlocale( LC_ALL,"Russian" );
    srand(time(NULL));
const int a =13,b=4;
int dispen=1;
 
 
int desk[b][a]={0};
int hand[5][2]={0};
int hand1[5][2]={0};
int diller[11][4]={0};
task(desk);
 
dispensation(desk,hand,hand1,diller,&dispen);
 
for(int x=0;x<=9;x++)
{
    std::cout<<"\n";
    for(int y=0;y<4;y++)
    {
        std::cout<<diller[x][y]<<"    ";
    }
 
}
sort(diller);
combo=hands (diller);
 
std::cout<<"\n\n\n\n";
 
 
for(int x=0;x<10;x++)
{
    std::cout<<"\n";
    for(int y=0;y<4;y++)
    {
        std::cout<<diller[x][y]<<"    ";
    }
 
}
 
 
 
 
std::cout<<"\n\n\n\n"<<combo;
 
 
 
 
system("pause");
return 0;
 
}
Это я сортирую по возрастанию что бы вычислять Стрейт-флаш, Роял-флаш или флаш.
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
#include <stdlib.h>
void sort(int diller[11][4])
{
for(int y =0;y<9;y++)
{
    for(int x=0;x<9;x++)
    {
    int total;
    int total1;
    int total2;
    int total3;
        if(diller[x][1]>diller[x+1][1])
        {
        total2=diller[x][2];
        total3=diller[x+1][2];
        total=diller[x][1];
        total1=diller[x][0];
        diller[x][1]=diller[x+1][1];
        diller[x][0]=diller[x+1][0];
        diller[x+1][1]=total;
        diller[x+1][0]=total1;
        diller[x][2]=total3;
        diller[x+1][2]=total2;
        }
    }
}
}
 
void task (int desk [4][13])
{
    int c=1;
        for(int x=0;x<4;x++)
        {
            for(int y=0;y<13;y++)
            {
                desk[x][y]=c;
                c++;
            }
        }
 
int kard=1;
 
while(kard!=52)
{
    int count = 1+rand()%52;
    int count1=0;
    int count2=0;
    for(int x=0;x<4;x++)
    {
        for(int y=0;y<=13;y++)
        {
            if(desk[x][y]==kard)
            {
                count1=x;
                count2=y;
            }
            }
        }
for(int x=0;x<4;x++)
    {
        for(int y=0;y<13;y++)
        {
            if(desk[x][y]==count)
            {
                desk[x][y]=kard;
                desk[count1][count2]=count;
                
            }
        }
    }
                
kard++;
}
}
сама функция раздачи и расчета комбинации ( что осталось), но самая трудный для меня расчет( стриты) остался...
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
136
137
138
139
140
141
142
143
144
#include <stdlib.h>
#include <iostream>
 
 
void dispensation(int desk [4][13],int hand[5][2],int hand1[5][2],int diller[11][4], int* Ptr)
{
    
 
    int kard=1;
int count=0;
int total=5;
 
if(*Ptr==1 || *Ptr%3==0)
{
while(kard<=total)
{
    
    for(int x=0;x<4;x++)
    {
        for(int y=0;y<13;y++)
        {
            if(desk[x][y]==kard)
            {
                hand[count][0]=x;
                hand[count][1]=y;
                
            }
        }
    }
count++;
kard++;
 
}
*Ptr+=1;
}
 
 
 
 
total+=5;
count=0;
if(*Ptr==2 || *Ptr%3==1)
{
while(kard<=total)
{
    
    for(int x=0;x<4;x++)
    {
        for(int y=0;y<13;y++)
        {
            if(desk[x][y]==kard)
            {
                hand1[count][0]=x;
                hand1[count][1]=y;
                
            }
        }
    }
count++;
kard++;
}
*Ptr+=1;
}
total+=5;
count=5;
 
if(*Ptr==3 || *Ptr%3==0)
 
{
    for(int x=0;x<5;x++)
    {
        diller[x][0]=hand[x][0];
        diller[x][1]=hand[x][1];
    }
    while(kard<=total)
{
    
    for(int x=0;x<4;x++)
    {
        for(int y=0;y<13;y++)
        {
            if(desk[x][y]==kard)
            {
                diller[count][0]=x;
                diller[count][1]=y;
                diller[count][2]=1;
                
            }
        }
    }
count++;
kard++;
}
*Ptr+=1;
}
total+=5;
 
 
}
 
int hands(int diller [11][4])
{
    int kard=1;
    int count =0;
    int total=1;
for(int x=10;x>=0;x--)
{
    diller[x][3]=1;
    
    if(diller[x][2]==1)
    count++;
    
    for(int y=10;y>=0;y--)
    {
        if(diller[x][1]== diller[y][1]+total && x!=y)
        {
            if(diller[y][2]==0)
            {
                diller[y][3]=1;
                total++;
                kard++;
            }
            else if(diller[y][2]==1 && count !=3)
            {
                diller[y][3]=1;
                total++;
                kard++;
                count++;
            }
        }
        
    }
if(kard>=5)
return 1;
kard=1;
count =0;
total=1;
for(int x=0;x<10;x++)
{
    diller[x][3]=0;
}
 
}
}
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:06     Игры на C++ #11
Даниил, придумай какую-нибудь идею, это главное.

Добавлено через 7 минут
Даниил, И если интересно, вот мой исходник, все рабочее, но пишу в Ubuntu
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
#include <cstdlib>
#include <vector>
 
using namespace std;
 
const int size_of_map_length=22;//ограничение размера карты по длинне
const int size_of_map_weight=50;//ограничение размера карты по ширине
 
int player_posicion_x=0;//координата игрока X
int player_posicion_y=0;//координата игрока Y
int health = 10;
 
const int number_of_mobs=150; //количество мобов
vector <pair<int,int> > mobs(number_of_mobs);// координаты всех мобов
 
 
char map[size_of_map_length][size_of_map_weight];//карта
 
void generation_mobs();//Генерация мобов
void output_map();// Вывод карты
int battles(int mob,char key);
 
int main()
{
    int mob=number_of_mobs;// опять же количество мобов, используется для прерывания цикла
    srand(time(0));//Для работы случайных чисел
    generation_mobs();//Генерация мобов
    system("stty -icanon -echo");//Неканонический режим терминала
    for(int i=0;i<size_of_map_length;i++)//Генерация карты
    {
        for(int j=0;j<size_of_map_weight;j++)
        {
            int temp;
            temp=rand()%80;
            if(temp<20)
            map[i][j]='_';
            if(temp>=20&&temp<40)
            map[i][j]='=';
            if(temp>=40&&temp<60)
            map[i][j]='^';
            if(temp>=60&&temp<80)
            map[i][j]='.';
        }
    }
    for(int i=0;i<number_of_mobs;i++)
    {
        map[mobs[i].first][mobs[i].second]='M';
    }//Генерация карты
 
    output_map();
    while(mob>0)
    {
        char key;
        cin>>key;
 
        switch(key)//Управление персонажем
        {
            case('w'):player_posicion_y--;break;
            case('s'):player_posicion_y++;break;
            case('a'):player_posicion_x--;break;
            case('d'):player_posicion_x++;break;
            case('p'):return 0;
            default:cout<<"Error!"<<endl;
        }//Управление персонажем
 
        if(player_posicion_x>=size_of_map_weight)player_posicion_x--;//Ограничение на ход вправо
        if(player_posicion_x<0)player_posicion_x++;//Ограничение на ход влево
        if(player_posicion_y<0)player_posicion_y++;//Ограничение на ход вверх
        if(player_posicion_y>=size_of_map_length)player_posicion_y--;//Ограничение на ход вниз
 
        int battle=battles(mob,key);//Битва
        if (battle==-1)//Смерть
        return 0;     //персонажа
        system("clear");
        output_map();//Вывод карты
        if(battle==1)cout<<"You won the battle\n";
        if(battle==2)cout<<"You lost the battle\n";
        if(mob==0)break;//Победа
    }
    system("clear");
    cout<<"YOU WIN THE GAME!!!!!!!!!!!!";
    return 0;
}
 
void generation_mobs()
{
    for(int i=0;i<number_of_mobs;i++)
    {
        int temp1,temp2;
        temp1=rand()%size_of_map_length;
        temp2=rand()%size_of_map_weight;
        mobs[i].first=temp1;
        mobs[i].second=temp2;
    }
    for(int i=0;i<number_of_mobs;i++)
    {
        for(int j=0;j<number_of_mobs;j++)
        {
            if(i==j)
            continue;
            if(mobs[i].first==mobs[j].first&&mobs[i].second==mobs[j].second)
            {
                cout<<"Generation...\n";
                generation_mobs();
            }
        }
    }
}
 
void output_map()
{
    for(int i=0;i<size_of_map_length;i++)    //Вывод
        {                                    //экран
            for(int j=0;j<size_of_map_weight;j++)//карты
            {                                    //и персонажа
                if(i==player_posicion_y&&j==player_posicion_x)
                {
                    cout<<'@';
                    if(i==size_of_map_length/2&&j==size_of_map_weight-1)
                    cout<<"  Health = "<<health;
                    continue;
                }
                cout<<map[i][j];
                if(i==size_of_map_length/2&&j==size_of_map_weight-1)
                cout<<"  Health = "<<health;
            }
            cout<<"\n";
        }
}
 
int battles(int mob,char key)
{
    int battle=0;
    for(int i=0;i<number_of_mobs;i++)//Бой
        {
            if(player_posicion_x==mobs[i].second&&player_posicion_y==mobs[i].first&&map[mobs[i].first][mobs[i].second]=='M')
            {
                int temp;
                temp=rand()%100;
                if(temp>50)
                {
                    battle=1;
                    map[mobs[i].first][mobs[i].second]='_';
                    mob--;
                }
                else
                {
                    battle=2;
                    if(key=='s')player_posicion_y--;
                    if(key=='w')player_posicion_y++;
                    if(key=='d')player_posicion_x--;
                    if(key=='a')player_posicion_x++;
                    health--;
                    if(health==0)
                    {
                        system("clear");
                        cout<<"Player dead :(";
                        return -1;
                    }
                }
            }
        }//Бой
        return battle;
}
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 22:09     Игры на C++ #12
Nerock, у меня зацикливает и пишет "Generation" а потом крашится.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 22:12  [ТС]     Игры на C++ #13
У меня то же самое
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:12     Игры на C++ #14
coloc, бывает, у меня рекурсивное расставление мобов, переменную на 14 строке
C++
1
const int number_of_mobs=150; //количество мобов
измени на 100, или меньше
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 22:36     Игры на C++ #15
Есть у меня бумажная книга " Язык программирования С++" Специальное издание- Бьерн Страуструп, но вот проблема, ее открываешь а там ппц, нечего не понятно)
Так вот, сколько потребуется времени что бы изучить с++ до уровня этой книги?))
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:43     Игры на C++ #16
MousePro, Берешь бумажную книгу У.Савича, и читаешь, въезжаешь, понимаешь, и оппа, ты дорос до уровня книги Страуструпа, грубо говоря так.

Не по теме:

Хотя мне тоже рановато до уровня этой книги(

Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
31.07.2013, 23:25     Игры на C++ #17
бот(компьютер) уже есть для этого покера?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
01.08.2013, 10:20     Игры на C++ #18
Может кому интересно будет. Просто пачки алгоритмов, методов, подходов...

Программирование магических игр.
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
01.08.2013, 10:27     Игры на C++ #19
Цитата Сообщение от Даниил Посмотреть сообщение
Вот мне интерессно, стоит ли учиться создавать игры на С++?
Зачем? игровая индустрия и без вас слишком хорошо развивается. Попробуйте поучиться писать, что нить полезное.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2013, 10:31     Игры на C++
Еще ссылки по теме:

C++ программирование игры
Создание игры C++
Подобие игры C++

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

Или воспользуйтесь поиском по форуму:
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
01.08.2013, 10:31     Игры на C++ #20
Даниил, а кто мешает WinApi на С++ учить? Уже если пошло дело с играми, то там недалеко до графики, то тут надо еще плюсануть OpenGl or DirectX.

Добавлено через 59 секунд
XRuZzz, скажу так, игры порой сложнее писать, чем теже сайты или интерфейсы для работы с бд.
Yandex
Объявления
01.08.2013, 10:31     Игры на C++
Ответ Создать тему
Опции темы

Текущее время: 08:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru