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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
05.05.2013, 11:33     Моя первая консольная игра :D #1
Всем доброго времени суток! Сегодня я хочу показать вам свою первую игру, правда пока она работает в консоли
В ней вы можете прыгать и ходить влево, вправо. Но у игры есть один баг: после прыжка вы передвигаетесь на одну клетку вправо, я пока не разобрался с этой проблемой. Вот код и видео:
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++, поэтому не судите строго Если что не так пишите.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 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
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.05.2013, 11:45     Моя первая консольная игра :D #6
sovaz1997, Сразу 3д? Проще? Если бы.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 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
Еще ссылки по теме:

Первая игра. Pacman C++
Моя первая попытка C++
C++ Консольная игра в 21

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

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

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