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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
#1

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

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

Вот мне интерессно, стоит ли учиться создавать игры на С++?
Или всё это ерунда и лучше игры создавать на тех же Delphi, WinAPI и т.д.?
А то я хочу попытаться сделать какую-то игрушку консольную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игры на C++ (C++):

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

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

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

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

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

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

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

Не по теме:

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

0
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:40  [ТС] #7
В личку тогда, да и что тут такого?Это наоборот похвально, когда человек старается
Даже если игра и самая простая, это всё равно остается игрой, а мне всего лишь нужен пример, не важно сложный или нет
0
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 21:52 #8
я стараюсь сделать что-то наподобие Rougelike с автогенерацией карты, генерацией позиций мобов, и прочими РПГ-шными плюшками
0
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 21:55  [ТС] #9
Я сам никогда игры не писал, и хотелось бы узнать структуру и т.д.
А то я вообще ничего не знаю в написании игр на С++
Может какая-то статья есть? А то я в гугле искал, ничего толкового не нашел
0
MousePro
49 / 30 / 1
Регистрация: 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
Nerock
8 / 7 / 0
Регистрация: 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
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
31.07.2013, 22:09 #12
Nerock, у меня зацикливает и пишет "Generation" а потом крашится.
0
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
31.07.2013, 22:12  [ТС] #13
У меня то же самое
0
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
31.07.2013, 22:12 #14
coloc, бывает, у меня рекурсивное расставление мобов, переменную на 14 строке
C++
1
const int number_of_mobs=150; //количество мобов
измени на 100, или меньше
0
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
31.07.2013, 22:36 #15
Есть у меня бумажная книга " Язык программирования С++" Специальное издание- Бьерн Страуструп, но вот проблема, ее открываешь а там ппц, нечего не понятно)
Так вот, сколько потребуется времени что бы изучить с++ до уровня этой книги?))
0
31.07.2013, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 22:36
Привет! Вот еще темы с ответами:

Нужна помощь в написании игры Манкала. Принцип игры то понятен.. а вот написать.. - Visual Basic
Здравствуйте! Нужна помощь в написании игры Манкала. Принцип игры то понятен.. а вот написать.. Лунки можно обозначить цифрами..

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

Баскетбол. Для каждой игры определить словесный результат игры (выигрыш или проигрыш) - C#
В одном массиве записано количество мячей, заброшенных баскетбольной командой в каждом из 15-ти матчей, в другом — количество пропущенных...

После обновления nvidia при запуске игры слышен звук игры, но экран её не показывает - Windows 10
После обновления до windows 10 перестали запускаться игры, так вроде все работает отлично. Изначально при запуске Warcraft игра...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru