Всем привет, сегодня мы опять напишем уже нашу 2 простенькую игру в консоле, приступим!
Для начала давайте создадим файл с нашими инклудами, назовём его includes.h .
#pragma once
#include <iostream>
#include <Windows.h>
#include <memory>
using namespace std;
Теперь предлагаю создать заголовочный файл самой игры, я его назову CGame.h .
#pragma once
#include "Includes.h"
#define SKINS_SIZE 5 // необязательно 5 просто мне влом делать больше разновидностей скинов
class CGame {
private:
int iPlayerMoney; // переменная отвечает за кол-во денег
int iPlayerLevel; // переменная отвечает за кол-во опыта
int iSelectCase; // выбранный кейс
int iSkin; // Отвечает за то какой скин нам выпадет
int iGameStage; // Стадия игры
public:
bool bGame; // если переменная = true мы играем, если false то мы проиграли
CGame() { // в конструкторе класса сетаем первоначальные настройки
iPlayerLevel = 0;
iPlayerMoney = 5000;
iSelectCase = 0;
bGame = true; // по началу мы играем
}
void GameDrawWin(); // прототипы наших функций
void GameDrawMenu();
void GameLogic();
void GameProcces();
~CGame(){
}
};
Теперь давайте перейдем к самому главному и самому интересному, написанию нашей игры. Для начала опишем функцию рисования меню.
#include "CGame.h"
void CGame::GameDrawMenu() {
system("cls");
cout << "Money : " << iPlayerMoney << "\t" << "Level : " << iPlayerLevel << endl; // выводим наш опыт и деньги
cout << " Select Case Open :" << endl; // Предлагаем выбрать кейс
cout << " Bronze 250$" << endl; //цены на наши кейсы
cout << " Silver 750$" << endl;
cout << " Golden 1250$" << endl;
cout << "\n enter \n 1 - Bronze,\n 2 - Silver,\n 3 - Golden : "; // простенький метод выбора кейса
cin >> iSelectCase;
}
Далее давайте опишем функцию логики и функцию игрового процесса.
void CGame::GameProcces() {
GameDrawMenu(); // для начала отрисовываем наше меню
switch (iSelectCase) {
case 1:
iPlayerMoney -= 250; // снимаем деньги, 250 потому что мы открыли 1 кейс который стоит 250$
system("cls");
iSkin = rand() % SKINS_SIZE; // генерим рандомный скин
switch (iSkin) {
case 0:
iPlayerLevel += 25; // Начисляем лвл
iPlayerMoney += 150;// Начисляем деньги
cout << "You fell out Glock-18" << endl; break; // выводим сообщение о полученном призе
case 1:
iPlayerLevel += 25;// Начисляем лвл
iPlayerMoney += 150;// Начисляем деньги
cout << "You fell out Mag - 7" << endl; break;
case 2:
iPlayerLevel += 25;// Начисляем лвл
iPlayerMoney += 150;// Начисляем деньги
cout << "You fell out Usp-s" << endl; break;
case 3:
iPlayerLevel += 30;// Начисляем лвл
iPlayerMoney += 200;// Начисляем деньги
cout << "You fell out Nova" << endl; break;
case 4:
iPlayerLevel += 35;// Начисляем лвл
iPlayerMoney += 250;// Начисляем деньги
cout << "You fell out pp-Bizon" << endl; break;
case 5:
iPlayerLevel += 50;// Начисляем лвл
iPlayerMoney += 300;// Начисляем деньги
cout << "You fell out MP7" << endl; break;
} break;
case 2: // дальше делаем аналогично для других кейсов немного редактируя дроп, деньги и опыт.
iPlayerMoney -= 750;
system("cls");
iSkin = rand() % SKINS_SIZE;
switch (iSkin) {
case 0:
iPlayerLevel += 50; // Начисляем лвл
iPlayerMoney += 350;// Начисляем деньги
cout << "You fell out Galil-Ar" << endl; break;
case 1:
iPlayerLevel += 60;// Начисляем лвл
iPlayerMoney += 400;// Начисляем деньги
cout << "You fell out Famas" << endl; break;
case 2:
iPlayerLevel += 75;// Начисляем лвл
iPlayerMoney += 500;// Начисляем деньги
cout << "You fell out Scout" << endl; break;
case 3:
iPlayerLevel += 85;// Начисляем лвл
iPlayerMoney += 800;// Начисляем деньги
cout << "You fell out Ak-47" << endl; break;
case 4:
iPlayerLevel += 100;// Начисляем лвл
iPlayerMoney += 900;// Начисляем деньги
cout << "You fell out M4A1-S" << endl; break;
case 5:
iPlayerLevel += 150;// Начисляем лвл
iPlayerMoney += 1000;// Начисляем деньги
cout << "You fell out AWP" << endl; break;
} break;
case 3:
iPlayerMoney -= 1250;
system("cls");
iSkin = rand() % SKINS_SIZE;
switch (iSkin) {
case 0:
iPlayerLevel += 200; // Начисляем лвл
iPlayerMoney += 1000;// Начисляем деньги
cout << "You fell out Gut-Knife" << endl; break;
case 1:
iPlayerLevel += 220;// Начисляем лвл
iPlayerMoney += 1050;// Начисляем деньги
cout << "You fell out Flip-Knife" << endl; break;
case 2:
iPlayerLevel += 240;// Начисляем лвл
iPlayerMoney += 1100;// Начисляем деньги
cout << "You fell out Bowie-Knife" << endl; break;
case 3:
iPlayerLevel += 300;// Начисляем лвл
iPlayerMoney += 1300;// Начисляем деньги
cout << "You fell out Bayonet-Knife" << endl; break;
case 4:
iPlayerLevel += 350;// Начисляем лвл
iPlayerMoney += 1500;// Начисляем деньги
cout << "You fell out M9Bayonet-Knife" << endl; break;
case 5:
iPlayerLevel += 500;// Начисляем лвл
iPlayerMoney += 2500;// Начисляем деньги
cout << "You fell out Kerambit-Knife" << endl; break;
} break;
}
cout << "If you want to return to the menu enter 1, exit - other :"; // после того как мы открыли кейс предлагаем либо выйти в главное меню, либо закрыть игру
cin >> iGameStage;
if (iGameStage == 1)
GameProcces(); // наглядное применение рекурсии
else
bGame = false; // если мы хотим выйти из игры, то переменную отвечающую за то что мы играем делаем false, в main файле мы продумаем этот момент
}
void CGame::GameLogic() {
if (iPlayerMoney <= 0) //если деняг 0 то мы проиграли
bGame = false;
}
Теперь наша игра почти готова, я заметил, что мы можем проиграть, но не можем выиграть, давайте это исправим путем дополнения нашей логики.
// функция для рисовки нашей победы
void CGame::GameDrawWin() {
system("cls"); // чистим консоль от лишнего текста
cout << "Money : " << iPlayerMoney << "\t" << "You win" << endl; // сообщение о нашей победе
system("pause"); // делаем паузу, чтобы игрок успел прочитать наше сообщение
}
void CGame::GameLogic() {
if (iPlayerMoney <= 0) //если деняг 0 то мы проиграли
bGame = false;
if (iPlayerMoney >= 30000) {
bGame = false; //мы вин т.к деняг мы накопили достаточно что бы уехать жить в лондон
GameDrawWin();
}
}
Теперь осталось написать наш главный файл, в котором мы будем заводить нашу игру.
#include "CGame.h"
int main()
{
SetConsoleTitle("Case Simulator"); // что бы наша консоль имела приятное название
unique_ptr<CGame> g_pGame(new CGame()); // создаем обьект нашего класса CGame c помощью умного указателя
while (g_pGame->bGame) { // пока мы не проиграли игра продолжается
g_pGame->GameLogic();
g_pGame->GameProcces();
}
return 0;
}
Вот подходит к концу наш простенький гайд, если вам понравится то в дальнейшем добавлю в нашу игру инвентарь и ещё какие-нибудь другие идеи ( если у вас есть идея напишите её в комментарии, читаю все ).
comment_402Всем привет, сегодня мы опять напишем уже нашу 2 простенькую игру в консоле, приступим!
Для начала давайте создадим файл с нашими инклудами, назовём его includes.h .
Теперь предлагаю создать заголовочный файл самой игры, я его назову CGame.h .
#pragma once #include "Includes.h" #define SKINS_SIZE 5 // необязательно 5 просто мне влом делать больше разновидностей скинов class CGame { private: int iPlayerMoney; // переменная отвечает за кол-во денег int iPlayerLevel; // переменная отвечает за кол-во опыта int iSelectCase; // выбранный кейс int iSkin; // Отвечает за то какой скин нам выпадет int iGameStage; // Стадия игры public: bool bGame; // если переменная = true мы играем, если false то мы проиграли CGame() { // в конструкторе класса сетаем первоначальные настройки iPlayerLevel = 0; iPlayerMoney = 5000; iSelectCase = 0; bGame = true; // по началу мы играем } void GameDrawWin(); // прототипы наших функций void GameDrawMenu(); void GameLogic(); void GameProcces(); ~CGame(){ } };Теперь давайте перейдем к самому главному и самому интересному, написанию нашей игры. Для начала опишем функцию рисования меню.
#include "CGame.h" void CGame::GameDrawMenu() { system("cls"); cout << "Money : " << iPlayerMoney << "\t" << "Level : " << iPlayerLevel << endl; // выводим наш опыт и деньги cout << " Select Case Open :" << endl; // Предлагаем выбрать кейс cout << " Bronze 250$" << endl; //цены на наши кейсы cout << " Silver 750$" << endl; cout << " Golden 1250$" << endl; cout << "\n enter \n 1 - Bronze,\n 2 - Silver,\n 3 - Golden : "; // простенький метод выбора кейса cin >> iSelectCase; }Далее давайте опишем функцию логики и функцию игрового процесса.
void CGame::GameProcces() { GameDrawMenu(); // для начала отрисовываем наше меню switch (iSelectCase) { case 1: iPlayerMoney -= 250; // снимаем деньги, 250 потому что мы открыли 1 кейс который стоит 250$ system("cls"); iSkin = rand() % SKINS_SIZE; // генерим рандомный скин switch (iSkin) { case 0: iPlayerLevel += 25; // Начисляем лвл iPlayerMoney += 150;// Начисляем деньги cout << "You fell out Glock-18" << endl; break; // выводим сообщение о полученном призе case 1: iPlayerLevel += 25;// Начисляем лвл iPlayerMoney += 150;// Начисляем деньги cout << "You fell out Mag - 7" << endl; break; case 2: iPlayerLevel += 25;// Начисляем лвл iPlayerMoney += 150;// Начисляем деньги cout << "You fell out Usp-s" << endl; break; case 3: iPlayerLevel += 30;// Начисляем лвл iPlayerMoney += 200;// Начисляем деньги cout << "You fell out Nova" << endl; break; case 4: iPlayerLevel += 35;// Начисляем лвл iPlayerMoney += 250;// Начисляем деньги cout << "You fell out pp-Bizon" << endl; break; case 5: iPlayerLevel += 50;// Начисляем лвл iPlayerMoney += 300;// Начисляем деньги cout << "You fell out MP7" << endl; break; } break; case 2: // дальше делаем аналогично для других кейсов немного редактируя дроп, деньги и опыт. iPlayerMoney -= 750; system("cls"); iSkin = rand() % SKINS_SIZE; switch (iSkin) { case 0: iPlayerLevel += 50; // Начисляем лвл iPlayerMoney += 350;// Начисляем деньги cout << "You fell out Galil-Ar" << endl; break; case 1: iPlayerLevel += 60;// Начисляем лвл iPlayerMoney += 400;// Начисляем деньги cout << "You fell out Famas" << endl; break; case 2: iPlayerLevel += 75;// Начисляем лвл iPlayerMoney += 500;// Начисляем деньги cout << "You fell out Scout" << endl; break; case 3: iPlayerLevel += 85;// Начисляем лвл iPlayerMoney += 800;// Начисляем деньги cout << "You fell out Ak-47" << endl; break; case 4: iPlayerLevel += 100;// Начисляем лвл iPlayerMoney += 900;// Начисляем деньги cout << "You fell out M4A1-S" << endl; break; case 5: iPlayerLevel += 150;// Начисляем лвл iPlayerMoney += 1000;// Начисляем деньги cout << "You fell out AWP" << endl; break; } break; case 3: iPlayerMoney -= 1250; system("cls"); iSkin = rand() % SKINS_SIZE; switch (iSkin) { case 0: iPlayerLevel += 200; // Начисляем лвл iPlayerMoney += 1000;// Начисляем деньги cout << "You fell out Gut-Knife" << endl; break; case 1: iPlayerLevel += 220;// Начисляем лвл iPlayerMoney += 1050;// Начисляем деньги cout << "You fell out Flip-Knife" << endl; break; case 2: iPlayerLevel += 240;// Начисляем лвл iPlayerMoney += 1100;// Начисляем деньги cout << "You fell out Bowie-Knife" << endl; break; case 3: iPlayerLevel += 300;// Начисляем лвл iPlayerMoney += 1300;// Начисляем деньги cout << "You fell out Bayonet-Knife" << endl; break; case 4: iPlayerLevel += 350;// Начисляем лвл iPlayerMoney += 1500;// Начисляем деньги cout << "You fell out M9Bayonet-Knife" << endl; break; case 5: iPlayerLevel += 500;// Начисляем лвл iPlayerMoney += 2500;// Начисляем деньги cout << "You fell out Kerambit-Knife" << endl; break; } break; } cout << "If you want to return to the menu enter 1, exit - other :"; // после того как мы открыли кейс предлагаем либо выйти в главное меню, либо закрыть игру cin >> iGameStage; if (iGameStage == 1) GameProcces(); // наглядное применение рекурсии else bGame = false; // если мы хотим выйти из игры, то переменную отвечающую за то что мы играем делаем false, в main файле мы продумаем этот момент } void CGame::GameLogic() { if (iPlayerMoney <= 0) //если деняг 0 то мы проиграли bGame = false; }Теперь наша игра почти готова, я заметил, что мы можем проиграть, но не можем выиграть, давайте это исправим путем дополнения нашей логики.
// функция для рисовки нашей победы void CGame::GameDrawWin() { system("cls"); // чистим консоль от лишнего текста cout << "Money : " << iPlayerMoney << "\t" << "You win" << endl; // сообщение о нашей победе system("pause"); // делаем паузу, чтобы игрок успел прочитать наше сообщение } void CGame::GameLogic() { if (iPlayerMoney <= 0) //если деняг 0 то мы проиграли bGame = false; if (iPlayerMoney >= 30000) { bGame = false; //мы вин т.к деняг мы накопили достаточно что бы уехать жить в лондон GameDrawWin(); } }Теперь осталось написать наш главный файл, в котором мы будем заводить нашу игру.
#include "CGame.h" int main() { SetConsoleTitle("Case Simulator"); // что бы наша консоль имела приятное название unique_ptr<CGame> g_pGame(new CGame()); // создаем обьект нашего класса CGame c помощью умного указателя while (g_pGame->bGame) { // пока мы не проиграли игра продолжается g_pGame->GameLogic(); g_pGame->GameProcces(); } return 0; }Вот подходит к концу наш простенький гайд, если вам понравится то в дальнейшем добавлю в нашу игру инвентарь и ещё какие-нибудь другие идеи ( если у вас есть идея напишите её в комментарии, читаю все ).