概述
跟我小时候玩的军旗不太一样但是玩法是差不多der!个人觉得小时候玩的线下的比较好玩,部分代码放下面了:
#define CHESIZE 40 // 棋盘尺寸,不能随意调整
#define RESETX 170
#define RESETY 350 // 重置原点
typedef enum // 要用到的棋子ID
{
si, jun, shi, lv, tuan,
ying, lian, pai, ban, gong,
fei, chao, zha, qi, lei, bian,
xian, sheng, shen
}CHESSID;
typedef enum // 攻击类型
{
comatt, preatt, noatt
}ATTSTYLE;
typedef enum // 当前游戏方和棋子所属方
{
blue, red, white
}TEAM;
typedef enum // 选中与未选中
{
alchoose, unchoose
}CHOOSESTATE;
typedef enum // 区域状态
{
unknow, empty, exist
}STATE;
typedef struct // 坐标
{
int x;
int y;
}COOR;
typedef struct // 棋子
{
CHESSID id; // 棋子的ID
int power; // 棋子的等级
TEAM team; // 所属方
char* image; // 该棋子的图片,考虑到运行问题,本程序用字代替
int scoopc; // 工兵是挖到的地雷数
}CHESS;
typedef struct // 区域
{
COOR crdld; // 区域的左下坐标
CHESS chess; // 区域的棋子
STATE state; // 区域状态
}AREA;
typedef struct // 用户的选择信息
{
int i;
int j;
CHOOSESTATE state; // 选择状态
}CHOOSE;
void main() // 主函数
{
init();
while (true)
{
mmsg = GetMouseMsg();
getpreij();
if (mmsg.uMsg == WM_LBUTTONDOWN) //单击左键
{
judge();
}
else if (mmsg.uMsg == WM_RBUTTONDOWN
&& choose.state == alchoose) //单击右键
{
cancelchoose();
}
else if (mmsg.uMsg == WM_MBUTTONDOWN
&& choose.state == alchoose
&& area[choose.i][choose.j].chess.id != zha) //单击中键
{
killself();
cancelchoose();
userchange();
judgebunko();
}
}
}
// 杀死对方
void kill()
{
move();
}
// 自杀
void killself()
{
setfillcolor(BLACK);
floodfill(area[choose.i][choose.j].crdld.x, area[choose.i][choose.j].crdld.y, GREEN);
area[choose.i][choose.j].state = empty;
}
// 同归于尽
void perishtogether()
{
setfillcolor(BLACK);
cancelchoose();
floodfill(area[choose.i][choose.j].crdld.x, area[choose.i][choose.j].crdld.y, WHITE);
floodfill(area[i][j].crdld.x, area[i][j].crdld.y, WHITE);
area[choose.i][choose.j].state = empty;
area[i][j].state = empty;
}
// 游戏说明
void gamehelp()
{
getimage(&image, -10, -10, 500, 350);
cleardevice();
setorigin(50, 0);
setaspectratio(1, 1);
settextcolor(RED);
settextstyle(14, 0, "黑体");
outtextxy(-50, 0, "注:单击鼠标左键回到游戏界面");
settextcolor(WHITE);
settextstyle(24, 0, "黑体");
outtextxy(230, 5, "游戏说明");
settextstyle(12, 0, "宋体");
outtextxy(0, 35, "棋盘大小:6*6; 棋子总数:36; 敌对双方:红,蓝");
outtextxy(0, 60, "棋子类别:红棋(红方操作,14个) 蓝棋(蓝方操作,14个) 紫棋(功能棋,8个)");
outtextxy(0, 85, "红棋(蓝棋)类型:司令,军长,师长,旅长,团长,营长,连长,班长,军旗,工兵*2,炸弹*2.");
outtextxy(0, 100, "紫棋类型:地雷*4,变身棋*4. 注:'*'后面表示该棋的数量,没注则只有一个");
outtextxy(0, 125, "规则说明:1.司令最大,工兵最小,大的吃小的,一样就同归于尽,");
outtextxy(textwidth("规则说明:1."), 140, "炸弹能炸紫棋和敌方除军旗外所有的棋(炸弹也会消失).");
outtextxy(textwidth("规则说明:"), 155, "2.工兵可挖地雷,挖完后可扛对方棋变身(挖的雷越多,变成的人物越厉害).");
outtextxy(textwidth("规则说明:"), 170, "3.人物棋可吃变,吃后能变成工兵~军长中的一种,有一定几率变成隐藏BOSS.");
outtextxy(textwidth("规则说明:"), 185, "4.人物棋可自杀(算一次操作).");
outtextxy(textwidth("规则说明:"), 200, "5.执棋方进行完一次有效操作后,就换对方执棋(边框颜色表当前执棋方).");
outtextxy(textwidth("规则说明:"), 215, "6.一方棋子(军旗除外)全被消灭,就算输; 同时全部没有,则和棋.");
outtextxy(0, 240, "执棋方能进行的操作:操作1:打开棋子(算一次操作).");
outtextxy(textwidth("执棋方能进行的操作:"), 255, "操作2:攻击.");
outtextxy(textwidth("执棋方能进行的操作:"), 270, "操作3:移动.");
outtextxy(textwidth("执棋方能进行的操作:"), 285, "操作4:工兵(已挖雷)扛旗.");
outtextxy(textwidth("执棋方能进行的操作:"), 300, "操作5:吃变身卡.");
outtextxy(textwidth("执棋方能进行的操作:"), 315, "操作6:自杀.");
outtextxy(0, 340, "实施游戏操作说明(鼠标操作):实施操作1:选择要打开棋子所在的区域,单击.");
outtextxy(textwidth("实施游戏操作说明(鼠标操作):"), 355, "实施操作2~5:单击选中主动方(棋子边框会变绿)");
outtextxy(textwidth("实施游戏操作说明(鼠标操作):实施操作2~5:"), 370, "再单击选中被动方.");
outtextxy(textwidth("实施游戏操作说明(鼠标操作):"), 385, "实施操作6:选中己方棋子,单机鼠标的中键.");
settextcolor(RED);
outtextxy(textwidth("实施游戏操作说明(鼠标操作):"), 400, "注:要进行其他操作,必先撤销当前选定(单击右键撤销)");
settextcolor(WHITE);
setlinecolor(WHITE);
line(-30, 420, 570, 420);
outtextxy(0, 425, "人物棋等级一览(等高杀等小):工1 班2 连3 营4 团5 旅6 师7");
outtextxy(textwidth("人物棋等级一览(等高杀等小):"), 440, "军8 飞8 司9 升9 神10 仙10");
outtextxy(0, 455, "注:'飞' '升' '神' '仙' 都为工兵挖雷后扛旗所变,'飞''升''神'能直线飞,'仙'能满天飞");
while (true)
{
mmsg = GetMouseMsg();
if (mmsg.uMsg == WM_LBUTTONDOWN)
{
break;
}
}
cleardevice();
setorigin(RESETX, RESETY);
setaspectratio(1, -1);
putimage(-10, -10, &image);
}
这个代码有点多就不全放了,大家需要源代码的进群【881577770】领取一下!
最后
以上就是威武嚓茶为你收集整理的如何用C++写一个军旗耍耍的全部内容,希望文章能够帮你解决如何用C++写一个军旗耍耍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复