Перейти к содержанию
Опубликовано
comment_402

Всем привет, сегодня мы опять напишем уже нашу 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;
}

Вот подходит к концу наш простенький гайд, если вам понравится то в дальнейшем добавлю в нашу игру инвентарь и ещё какие-нибудь другие идеи ( если у вас есть идея напишите её в комментарии, читаю все ).

Рекомендуемые сообщения

Гость
Эта тема закрыта для публикации ответов.