Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
1

Игры на C++

31.07.2013, 21:35. Показов 2032. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот мне интерессно, стоит ли учиться создавать игры на С++?
Или всё это ерунда и лучше игры создавать на тех же Delphi, WinAPI и т.д.?
А то я хочу попытаться сделать какую-то игрушку консольную
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2013, 21:35
Ответы с готовыми решениями:

Для каждой игры определить словесный результат игры (выигрыш, проигрыш или ничья)
Помогите пожалуйста с задачей!!! В одном массиве записано количество мячей, забитых футбольной...

Сборка ПК "для себя" - игры, игры, игры! Киев, бюджет 8300 грн с монитором.
Всем доброго времени суток. 1. Бюджет примерно 8300 грн (с монитором) 2. Украина, г. Киев,...

Собираю компьютер для игры в GTA 5 а так же в игры 2015 года
Хочется поиграть в гта 5 на минимальных настройках, в 30-40 фпс У меня имеется: Видеокарта AMD...

Огромная проблема с компьютером не читает игры, при запуске из игры выбрасывает.
ПРивет всем, у меня проблема с компьютером, когда я загружаю игры на компьютер и начинаю в них...

21
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:37 2
Я покер писал консольный против компа
0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:37  [ТС] 3
Интерессно)
Не могли бы вы выложить исходник? Если есть
0
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:38 4
Есть, но я учусь по этому показать стыдно \
Да и осталась только функция тасования колоды и функция распознавания комбинаций
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
31.07.2013, 21:39 5
Цитата Сообщение от MousePro Посмотреть сообщение
Есть, но я учусь по этому показать стыдно
Ну Вы же не говорите, что оно написано профессионально так что можете показывать. Заодно, может кто и покажет на недочеты
0
SummerRain
31.07.2013, 21:40
  #6

Не по теме:

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

0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:40  [ТС] 7
В личку тогда, да и что тут такого?Это наоборот похвально, когда человек старается
Даже если игра и самая простая, это всё равно остается игрой, а мне всего лишь нужен пример, не важно сложный или нет
0
9 / 8 / 2
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 21:52 8
я стараюсь сделать что-то наподобие Rougelike с автогенерацией карты, генерацией позиций мобов, и прочими РПГ-шными плюшками
0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:55  [ТС] 9
Я сам никогда игры не писал, и хотелось бы узнать структуру и т.д.
А то я вообще ничего не знаю в написании игр на С++
Может какая-то статья есть? А то я в гугле искал, ничего толкового не нашел
0
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:58 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;
}
 
}
}
0
9 / 8 / 2
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:06 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;
}
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
31.07.2013, 22:09 12
Nerock, у меня зацикливает и пишет "Generation" а потом крашится.
0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 22:12  [ТС] 13
У меня то же самое
0
9 / 8 / 2
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:12 14
coloc, бывает, у меня рекурсивное расставление мобов, переменную на 14 строке
C++
1
const int number_of_mobs=150; //количество мобов
измени на 100, или меньше
0
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 22:36 15
Есть у меня бумажная книга " Язык программирования С++" Специальное издание- Бьерн Страуструп, но вот проблема, ее открываешь а там ппц, нечего не понятно)
Так вот, сколько потребуется времени что бы изучить с++ до уровня этой книги?))
0
9 / 8 / 2
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:43 16
MousePro, Берешь бумажную книгу У.Савича, и читаешь, въезжаешь, понимаешь, и оппа, ты дорос до уровня книги Страуструпа, грубо говоря так.

Не по теме:

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

0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
31.07.2013, 23:25 17
бот(компьютер) уже есть для этого покера?
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
01.08.2013, 10:20 18
Может кому интересно будет. Просто пачки алгоритмов, методов, подходов...

Программирование магических игр.
0
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
01.08.2013, 10:27 19
Цитата Сообщение от Даниил Посмотреть сообщение
Вот мне интерессно, стоит ли учиться создавать игры на С++?
Зачем? игровая индустрия и без вас слишком хорошо развивается. Попробуйте поучиться писать, что нить полезное.
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
01.08.2013, 10:31 20
Даниил, а кто мешает WinApi на С++ учить? Уже если пошло дело с играми, то там недалеко до графики, то тут надо еще плюсануть OpenGl or DirectX.

Добавлено через 59 секунд
XRuZzz, скажу так, игры порой сложнее писать, чем теже сайты или интерфейсы для работы с бд.
0
01.08.2013, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2013, 10:31
Помогаю со студенческими работами здесь

Компьютер вырубается примерно после часа игры в требовательные игры
Кароче проблема такая - комп вырубается примерно после часа игры в требовательные игры, но может и...

Доработка игры - добавить выбор стратегий для игры с компьютером
Такая проблема: есть написанная игра, туда нужно добавить выбор стратегий для игры с компьютером....

После 10-15 минут игры в ресурсоемкие игры изображение на экране зависает
Здравствуйте. Проблема моя в том, что после 10-15 минут игры в ресурсоемкие игры изображение на...

Для каждой игры определить словесный результат игры (выигрыш или проигрыш)
Сделайте пожалуйста форму и код к данной задаче В одном массиве записано количество мячей,...


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

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