Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/39: Рейтинг темы: голосов - 39, средняя оценка - 4.67
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
1

Моя первая консольная игра :D

05.05.2013, 11:33. Просмотров 7100. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток! Сегодня я хочу показать вам свою первую игру, правда пока она работает в консоли
В ней вы можете прыгать и ходить влево, вправо. Но у игры есть один баг: после прыжка вы передвигаетесь на одну клетку вправо, я пока не разобрался с этой проблемой. Вот код и видео:
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
166
167
168
169
170
171
172
173
174
175
176
177
////////////////////////////////////////
//***Furyaev Stanislav***             //
//***Moscow, 2013.***                 //
//E-mail:furyaev.stanislav@gmail.com  //
////////////////////////////////////////
 
#include <iostream>
#include <conio.h>
#include <winbase.h>
#include <stdio.h>
#include <windows.h>
#include <process.h>
#include "GraphicMy.h"
 
using namespace std;
 
      char KeyMain; 
       int lev = 1;
      char KEY2;
     const COORD posSt = {0, 0};
     COORD pos2 = {0, 20};
    HANDLE htd = GetStdHandle(STD_OUTPUT_HANDLE); 
 
void KeyF(void* pParams){               //Создаёт ещё один поток, отвечающий за считывание клавиш с клавиатуры
    while(true){
        KeyMain = _getch();
    }
}
 
 
 
void jump(){
    for(int i=1; i<7; i++){
                _beginthread(KeyF, 0, NULL);      //Запускает тот самый поток ^
                SetConsoleTextAttribute(htd, 0);
                pos2.Y--;
                SetConsoleCursorPosition(htd, pos2);
                SetConsoleTextAttribute(htd, BACKGROUND_RED | BACKGROUND_INTENSITY);
                std::cout << " ";
                pos2.Y++;
                SetConsoleCursorPosition(htd, pos2);
                SetConsoleTextAttribute(htd, 0);
                std::cout << " ";
                pos2.Y--;
                Sleep(50);
                switch((int)KeyMain){
                case 75: {
                if(pos2.X == 0)
                    break;
                else{
                 SetConsoleCursorPosition(htd, pos2);
                 std::cout << " ";
                 pos2.X--;
                 break;
                }
                }
                case 77: {
                if(pos2.X == 79){ 
                    SetConsoleCursorPosition(htd, pos2);
                    std::cout << " ";
                    pos2.X = 0;
                    lev++;
                    break;
                }
                else{
                    SetConsoleCursorPosition(htd, pos2);
                    std::cout << " ";
                    pos2.X++;
                    break;
                }
                }
                }
            }
            for(int i2=1; i2<7; i2++){
                _beginthread(KeyF, 0, NULL);
                SetConsoleTextAttribute(htd, 0);
                pos2.Y++;
                SetConsoleCursorPosition(htd, pos2);
                SetConsoleTextAttribute(htd, BACKGROUND_RED | BACKGROUND_INTENSITY);
                std::cout << " ";
                pos2.Y--;
                SetConsoleCursorPosition(htd, pos2);
                SetConsoleTextAttribute(htd, 0);
                std::cout << " ";
                pos2.Y++;
                Sleep(50);
                switch((int)KeyMain){
                case 75: {
                if(pos2.X == 0)
                    break;
                else {
                 SetConsoleCursorPosition(htd, pos2);
                 std::cout << " ";
                 pos2.X--;
                 break;
                 }
                }
                case 77: {
                if(pos2.X == 79){ 
                    SetConsoleCursorPosition(htd, pos2);
                    std::cout << " ";
                    pos2.X = 0;
                    lev++;
                    break;
                }
                else{
                    SetConsoleCursorPosition(htd, pos2);
                    std::cout << " ";
                    pos2.X++;
                    break;
                }
                }
                }
            }
            KeyMain = ' ';
}
 
void GAME(){
 
    CONSOLE_CURSOR_INFO CCI;
    CCI.bVisible=false;
    CCI.dwSize=1;
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CCI);
 
    SetConsoleTextAttribute(htd, 0);
    system("cls");
    _beginthread(KeyF, 0, NULL);
    DrawLine('G', 80, 0, 21);
    
    while(true){
        KeyMain = ' ';
        SetConsoleTextAttribute(htd, 0);
        cout << " ";
        SetConsoleCursorPosition(htd, posSt);
        SetConsoleTextAttribute(htd, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY | 0);
        cout << "Level: " << lev;
        SetConsoleTextAttribute(htd, 0);
        SetConsoleCursorPosition(htd, pos2);
        SetConsoleTextAttribute(htd, BACKGROUND_RED | BACKGROUND_INTENSITY);
        cout << " ";
        
        SetConsoleTextAttribute(htd, 0);
        switch((int)KeyMain){
        case 75: {
            _beginthread(KeyF, 0, NULL);
            if(pos2.X == 0)
                break;
             else{
                 SetConsoleCursorPosition(htd, pos2);
                 cout << " ";
                 pos2.X--;
                 break;
            }
                 }
        case 72: jump();
        case 77: {
            _beginthread(KeyF, 0, NULL);
            if(pos2.X == 79){ 
                SetConsoleCursorPosition(htd, pos2);
                cout << " ";
                pos2.X = 0;
                lev++;
                break;
            }
            else{
                SetConsoleCursorPosition(htd, pos2);
                cout << " ";
                pos2.X++;
                break;
            }
            }
        case  27: break;
        case 113: break;
        }
    }
    
}
http://youtu.be/mmAh__1hKDY

P.S. Я новичок в C++, поэтому не судите строго Если что не так пишите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 11:33
Ответы с готовыми решениями:

Моя первая попытка
Недавно начала осваивать С++... От бумажного учебника перешла к практике, моя первая попытка решить...

Моя первая программа
Недавно решил заняться с++ и естественно первое что нужно сделать это калькулятор. Вот тут возникла...

Консольная игра в 21
Вообще это только реализация алгоритма игры, но работает. Если кому сильно заняться нечем-гляньте...

Консольная игра с кубиком
Решил написать консольную игру: игрок и компьютер кидают кубик и счет выводится на экран. Дело в...

8
3195 / 2008 / 344
Регистрация: 24.11.2012
Сообщений: 4,836
05.05.2013, 11:37 2
Просто ходить по прямой вряд ли интересно. Я на первом курсе когда игрался с консолью писал игрушку, где нужно было искать выход из лабиринта.
1
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 11:42  [ТС] 3
Ну это пока BETA версия Я собираюсь ещё много чего добавить...
0
CEO SOVAZ Corp.
384 / 230 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
05.05.2013, 11:42 4
Для консоли очень не плохо. Но я думаю, что проще освоить библиотеку OpenGL и создавать 3-х мерные игры
1
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 11:45  [ТС] 5
Я вот собираюсь начать изучать OpenGL, но пока не знаю с чего начать Но по-моему 2D немного проще, чем 3D...
0
3195 / 2008 / 344
Регистрация: 24.11.2012
Сообщений: 4,836
05.05.2013, 11:45 6
sovaz1997, Сразу 3д? Проще? Если бы.
0
CEO SOVAZ Corp.
384 / 230 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
05.05.2013, 12:06 7
Сначала ООП).

Добавлено через 1 минуту
Здесь есть очень хорошие уроки по C++. Можно многое узнать
1
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 12:07  [ТС] 8
Спасибо большое! Обязательно посмотрю
0
CEO SOVAZ Corp.
384 / 230 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
05.05.2013, 12:10 9
Не за что
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2013, 12:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Полиморфизм и консольная игра
Всем привет! Можно ли написать какую-то консольную игру вроде змейки на c++, но используя...

Моя первая программа, и с той фейл
Здравствуйте. В учебнике &quot;С++ для чайников первой программой идёт преобразование градусов...

Консольная игра, не могу разобраться со ссылками
Всем приветик! Делаю игру, в которой игрок и комп бросают кубик класс игрока: #include...

Моя первая задача, ток с паскаля перешел, подкоректируйте плиз..
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;Math.h&gt; using namespace...


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

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

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