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

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

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

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

05.05.2013, 11:33. Просмотров 3196. Ответов 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++, поэтому не судите строго Если что не так пишите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 11:33     Моя первая консольная игра :D
Посмотрите здесь:

C++ Моя первая программа, и с той фейл
Моя первая задача, ток с паскаля перешел, подкоректируйте плиз.. C++
Моя первая самостоятельная программа. Суть задания - найти призведение и сумму чисел C++
Первый комом (Вывести "Это моя первая С++ программа.") C++
Первая игра на C++ C++
C++ Консольная "графика", игра "Тетрис". Фигуры перестают прорисовываться на определенном этапе
Первая игра. Pacman C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2451 / 1623 / 238
Регистрация: 24.11.2012
Сообщений: 3,993
05.05.2013, 11:37     Моя первая консольная игра :D #2
Просто ходить по прямой вряд ли интересно. Я на первом курсе когда игрался с консолью писал игрушку, где нужно было искать выход из лабиринта.
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 11:42  [ТС]     Моя первая консольная игра :D #3
Ну это пока BETA версия Я собираюсь ещё много чего добавить...
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
05.05.2013, 11:42     Моя первая консольная игра :D #4
Для консоли очень не плохо. Но я думаю, что проще освоить библиотеку OpenGL и создавать 3-х мерные игры
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 11:45  [ТС]     Моя первая консольная игра :D #5
Я вот собираюсь начать изучать OpenGL, но пока не знаю с чего начать Но по-моему 2D немного проще, чем 3D...
0x10
2451 / 1623 / 238
Регистрация: 24.11.2012
Сообщений: 3,993
05.05.2013, 11:45     Моя первая консольная игра :D #6
sovaz1997, Сразу 3д? Проще? Если бы.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
05.05.2013, 12:06     Моя первая консольная игра :D #7
Сначала ООП).

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

Консольная игра "Сапер" C++
Моя первая попытка C++
C++ Консольная игра в 21
Консольная игра "3 в ряд" C++
Консольная игра с кубиком C++

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

Или воспользуйтесь поиском по форуму:
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
05.05.2013, 12:10     Моя первая консольная игра :D #9
Не за что
Yandex
Объявления
05.05.2013, 12:10     Моя первая консольная игра :D
Ответ Создать тему
Опции темы

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