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

Игры на C++

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

Студворк — интернет-сервис помощи студентам
Вот мне интерессно, стоит ли учиться создавать игры на С++?
Или всё это ерунда и лучше игры создавать на тех же Delphi, WinAPI и т.д.?
А то я хочу попытаться сделать какую-то игрушку консольную
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.07.2013, 21:35
Ответы с готовыми решениями:

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

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

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

21
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:37
Я покер писал консольный против компа
0
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:37  [ТС]
Интерессно)
Не могли бы вы выложить исходник? Если есть
0
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 21:38
Есть, но я учусь по этому показать стыдно \
Да и осталась только функция тасования колоды и функция распознавания комбинаций
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
31.07.2013, 21:39
Цитата Сообщение от MousePro Посмотреть сообщение
Есть, но я учусь по этому показать стыдно
Ну Вы же не говорите, что оно написано профессионально так что можете показывать. Заодно, может кто и покажет на недочеты
0
31.07.2013, 21:40

Не по теме:

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

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

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
Даниил, придумай какую-нибудь идею, это главное.

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

Не по теме:

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

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

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

Добавлено через 59 секунд
XRuZzz, скажу так, игры порой сложнее писать, чем теже сайты или интерфейсы для работы с бд.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2013, 10:31
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru