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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
#1

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

05.05.2013, 11:33. Просмотров 3746. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 11:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Моя первая консольная игра :D (C++):

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

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

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

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

Моя первая задача, ток с паскаля перешел, подкоректируйте плиз.. - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;Math.h&gt; using namespace std; void main() { ...

Моя первая самостоятельная программа. Суть задания - найти призведение и сумму чисел - C++
В общем, выполняю первое самомтоятельно задание по с++. Суть задания - найти призведение и сумму чисел, пр иэтом функции произведения и...

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

Добавлено через 1 минуту
Здесь есть очень хорошие уроки по C++. Можно многое узнать
1
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 12:07  [ТС] #8
Спасибо большое! Обязательно посмотрю
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
05.05.2013, 12:10 #9
Не за что
0
05.05.2013, 12:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2013, 12:10
Привет! Вот еще темы с ответами:

Первый комом (Вывести "Это моя первая С++ программа.") - C++
Привет! Начал изучать С++ недавно. Классная штука! В книге был пример, который нужно повторить. Простенький код /* Программа №1 -...

Первая игра на C++ - C++
Всем доброго времени суток. Решил попробовать написать первую игру (тетрис/змейка), подскажите с чего начать? Мб литературуку какую...

Первая игра. Pacman - C++
Доброго времени суток. Пишу свою первую игру. Выбор пал на Pacman. В процессе разработки я где-то затупил(предполагаю, что в функции...

Консольная игра "Сапер" - C++
Помогите создать игру &quot;Сапер&quot;, через указатель на массив (visual studio), и что бы она отображалась на консоле?!


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

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

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