一.游戏规则:
这款自己DIY的小游戏有24个棋子。其中司令,军长各1个;师长,旅长,团长,营长,炸弹各2个;连长,排长,工兵,地雷各3个。棋子由小到大的顺序是:司令>军长>师长>旅长>团长>营长>连长>排长>工兵。其中工兵能挖掉地雷(工兵大于地雷),地雷能炸掉除工兵以外的其他任何棋子并消失;炸弹能炸掉对方所出的任何棋子并消失。若玩家和电脑所出的棋子相同,双方棋子同时阵亡。
二.代码实现:
/*--------------------------
game.h
---------------------------*/
#ifndef GAME_H_
#define GAME_H_
#include
#include
#include
#include
#include
#pragma warning(disable:26495)
//棋子
typedef struct
{
std::string name;//棋子的名称(司令等)
int amount;//棋子的数量
int identify;//棋子的编号
}chess;
//抽象基类
class Player
{
protected:
chess ces[11]; //11种不同种类的棋子(司军师旅团 营连排兵弹 雷)
int chessSum = 0; //生还的棋子总数
public:
Player();
void deleteChess(int id); //某方棋子被干掉
int showChessSum()const; //访问chessSum变量
virtual void showList()const = 0; //向玩家展示我方生还的棋子
virtual void operation(int& my)const = 0; //玩家的操作
};
//我方玩家(自己)
class You :public Player
{
public:
virtual void showList()const; //向玩家展示我方生还的棋子
virtual void operation(int& my)const; //玩家的操作
};
//敌方玩家(电脑)
class ComputerPlayer :public Player
{
public:
virtual void showList()const; //向玩家展示电脑方生还的棋子
virtual void operation(int& co)const; //电脑的操作(随机生成一个棋子)
};
#endif
/*--------------------------
game.cpp
---------------------------*/
#include"game.h"
#pragma warning(disable:6385)
Player::Player()
{
//初始化棋子名称
ces[10].name = "炸弹";
ces[9].name = "司令";
ces[8].name = "军长";
ces[7].name = "师长";
ces[6].name = "旅长";
ces[5].name = "团长";
ces[4].name = "营长";
ces[3].name = "连长";
ces[2].name = "排长";
ces[1].name = "工兵";
ces[0].name = "地雷";
for (int i = 10; i >= 0; i--)
{
//初始化棋子编号
ces[i].identify = i;
if (i == 9 || i == 8)
{
ces[i].amount = 1;
}
else if (i >= 4 && i deleteChess(conum);
}
system("cls");
my->showList();
co->showList();
} while (1);
delete my;
delete co;
}
return 0;
}
|