C語(yǔ)言自定義軍旗游戲源碼
本文實(shí)例為大家分享了C語(yǔ)言自定義軍旗游戲的具體代碼,供大家參考,具體內(nèi)容如下
#include <graphics.h>
#include <time.h>
#define CHESIZE 40 // 棋盤尺寸,不能隨意調(diào)整
#define RESETX 170
#define RESETY 350 // 重置原點(diǎn)
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 // 當(dāng)前游戲方和棋子所屬方
{
blue, red, white
}TEAM;
typedef enum // 選中與未選中
{
alchoose, unchoose
}CHOOSESTATE;
typedef enum // 區(qū)域狀態(tài)
{
unknow, empty, exist
}STATE;
typedef struct // 坐標(biāo)
{
int x;
int y;
}COOR;
typedef struct // 棋子
{
CHESSID id; // 棋子的ID
int power; // 棋子的等級(jí)
TEAM team; // 所屬方
char *image; // 該棋子的圖片,考慮到運(yùn)行問(wèn)題,本程序用字代替
int scoopc; // 工兵是挖到的地雷數(shù)
}CHESS;
typedef struct // 區(qū)域
{
COOR crdld; // 區(qū)域的左下坐標(biāo)
CHESS chess; // 區(qū)域的棋子
STATE state; // 區(qū)域狀態(tài)
}AREA;
typedef struct // 用戶的選擇信息
{
int i;
int j;
CHOOSESTATE state; // 選擇狀態(tài)
}CHOOSE;
IMAGE image;
AREA area[6][6]; // 定義棋盤大小
CHESS datachess[19]; // 幾種基本棋子類型
CHOOSE choose; // 用戶選擇信息
MOUSEMSG mmsg; // 鼠標(biāo)信息
TEAM user; // 執(zhí)棋方
int lockchessboard = 0; // 是否鎖定棋盤
int i; // 當(dāng)前鼠標(biāo)所在區(qū)域的坐標(biāo)
int j;
char *str[]={"工","班","排","連","營(yíng)","團(tuán)","旅","師","軍","司","棋","炸","變","雷","飛","超","升","神","仙"};
void init();
void initchessbute(); // 給初始化棋子基本參數(shù)
void initvalue();
void drawboard(); // 畫棋盤
void randomarr(int *); // 實(shí)現(xiàn)棋的隨機(jī)排列
void judge();
void getpreij(); // 獲得當(dāng)前鼠標(biāo)所在區(qū)域坐標(biāo)
int checkij(); // 檢查當(dāng)鼠標(biāo)所在區(qū)域
void open(); // 打開所在區(qū)域
int whemove(); // 判斷是否能移動(dòng)
void move(); // 移動(dòng)
int judgeunknow(); // 檢測(cè)當(dāng)前未翻開棋子數(shù)
ATTSTYLE wheattack(); // 判斷是否能攻擊
void kill(); // 殺死當(dāng)前選擇的棋
void killself(); // 自殺
void perishtogether(); // 同歸于盡
void getteam(); // 用作改變棋子類型時(shí),對(duì)棋子所屬方賦值
void userchange(); // 交換執(zhí)棋方
void judgebunko(); // 判斷輸贏
void choosearea(); // 選定區(qū)域
void cancelchoose(); // 取消選定
void change(); // 變身
void bluewin(); // 藍(lán)方勝利
void redwin(); // 紅方勝利
void gamehelp(); // 規(guī)則說(shuō)明
void quit(); // 退出游戲
void peace(); // 和棋
void surrender(); // 投降
void resetchessboard(); // 重置
// 下面幾個(gè)函數(shù)為判斷棋子的攻擊類型
ATTSTYLE judgegong(); // 判斷工兵
ATTSTYLE judgecom(); // 判普通人物
ATTSTYLE judgezha(); // 判斷炸彈
void main() // 主函數(shù)
{
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 init()
{
initgraph(640, 480);
setorigin(RESETX, RESETY); // 重置原點(diǎn)
setaspectratio(1, -1); // 把 y 軸上方設(shè)為正半軸
drawboard();
initvalue();
}
void drawboard() // 畫棋盤
{
int i1;
setlinecolor(WHITE);
for (i1=0; i1<7; i1++)
{
line(i1*CHESIZE, 0, i1*CHESIZE, CHESIZE*6);
}
for (i1=0; i1<7; i1++)
{
line(0, i1*CHESIZE, CHESIZE*6, i1*CHESIZE);
}
setlinecolor(WHITE);
setfillcolor(RED);
rectangle(-10, -10, CHESIZE*6+10, CHESIZE*6+10);
floodfill(-1, -1, WHITE);
rectangle(7*CHESIZE, CHESIZE, 9*CHESIZE, 6*CHESIZE);
line(7*CHESIZE, 5*CHESIZE, 9*CHESIZE, 5*CHESIZE);
line(7*CHESIZE, 4*CHESIZE, 9*CHESIZE, 4*CHESIZE);
line(7*CHESIZE, 3*CHESIZE, 9*CHESIZE, 3*CHESIZE);
line(7*CHESIZE, 2*CHESIZE, 9*CHESIZE, 2*CHESIZE);
setaspectratio(1, 1);
settextstyle(35, 18, "黑體");
settextcolor(RED);
outtextxy(7*CHESIZE+2, -6*CHESIZE+2, "幫助");
settextcolor(BROWN);
outtextxy(7*CHESIZE+2, -5*CHESIZE+2, "投降");
settextcolor(GREEN);
outtextxy(7*CHESIZE+2, -4*CHESIZE+2, "和棋");
settextcolor(YELLOW);
outtextxy(7*CHESIZE+2, -3*CHESIZE+2, "重置");
settextcolor(CYAN);
outtextxy(7*CHESIZE+2, -2*CHESIZE+2, "退出");
settextcolor(LIGHTMAGENTA);
settextstyle(50, 20, "黑體");
outtextxy(CHESIZE, -CHESIZE*8, "兩國(guó)軍旗");
setaspectratio(1, -1);
}
void initchessbute() // 設(shè)置棋子基本參數(shù)
{
datachess[0].id = gong;
datachess[0].power = 1;
datachess[0].image = str[0];
datachess[0].scoopc = 0;
datachess[1].id = ban;
datachess[1].power = 2;
datachess[1].image = str[1];
datachess[1].scoopc = 0;
datachess[2].id = pai;
datachess[2].power = 3;
datachess[2].image = str[2];
datachess[2].scoopc = 0;
datachess[3].id = lian;
datachess[3].power = 4;
datachess[3].image = str[3];
datachess[3].scoopc = 0;
datachess[4].id = ying;
datachess[4].power = 5;
datachess[4].image = str[4];
datachess[4].scoopc = 0;
datachess[5].id = tuan;
datachess[5].power = 6;
datachess[5].image = str[5];
datachess[5].scoopc = 0;
datachess[6].id = lv;
datachess[6].power = 7;
datachess[6].image = str[6];
datachess[6].scoopc = 0;
datachess[7].id = shi;
datachess[7].power = 8;
datachess[7].image = str[7];
datachess[7].scoopc = 0;
datachess[8].id = jun;
datachess[8].power = 9;
datachess[8].image = str[8];
datachess[8].scoopc = 0;
datachess[9].id = si;
datachess[9].power = 10;
datachess[9].image = str[9];
datachess[9].scoopc = 0;
datachess[10].id = qi;
datachess[10].power = 100;
datachess[10].image = str[10];
datachess[10].scoopc = 0;
datachess[11].id = zha;
datachess[11].power = 99;
datachess[11].image = str[11];
datachess[11].scoopc = 0;
datachess[12].id = bian;
datachess[12].power = 0;
datachess[12].image = str[12];
datachess[12].scoopc = 0;
datachess[13].id = lei;
datachess[13].power = 98;
datachess[13].image = str[13];
datachess[13].scoopc = 0;
datachess[14].id = fei;
datachess[14].power = 9;
datachess[14].image = str[14];
datachess[14].scoopc = 0;
datachess[15].id = chao;
datachess[15].power = 11;
datachess[15].image = str[15];
datachess[15].scoopc = 0;
datachess[16].id = sheng;
datachess[16].power = 10;
datachess[16].image = str[16];
datachess[16].scoopc = 0;
datachess[17].id = shen;
datachess[17].power = 11;
datachess[17].image = str[17];
datachess[17].scoopc = 0;
datachess[18].id = xian;
datachess[18].power = 11;
datachess[18].image = str[18];
datachess[18].scoopc = 0;
}
void initvalue() // 初始化值
{
CHESS chess[36];
int random[36];
int count;
int i1, j1;
initchessbute();
randomarr(random);
for (i1=0; i1<=11; i1++)
{
chess[i1] = datachess[i1];
chess[i1].team = red;
}
chess[i1] = datachess[11];
chess[i1].team = red;
chess[i1+1] = datachess[0];
chess[i1+1].team = red;
for (i1=0; i1<=11; i1++)
{
chess[i1+14] = datachess[i1];
chess[i1+14].team = blue;
}
chess[i1+14] = datachess[11];
chess[i1+14].team = blue;
chess[i1+15] = datachess[0];
chess[i1+15].team = blue;
for (i1=0; i1<4; i1++)
{
chess[i1+28] = datachess[12];
chess[i1+28].team = white;
chess[i1+32] = datachess[13];
chess[i1+32].team = white;
}
setfillcolor(YELLOW);
for (count=0, i1=0; i1<6; i1++)
{
for (j1=0; j1<6; j1++, count++)
{
area[i1][j1].chess = chess[random[count]];
area[i1][j1].crdld.x = i1 * CHESIZE + 1;
area[i1][j1].crdld.y = j1 * CHESIZE + 1;
area[i1][j1].state = unknow;
floodfill(area[i1][j1].crdld.x, area[i1][j1].crdld.y, WHITE);
}
}
user = red;
choose.state = unchoose;
}
void randomarr(int random[]) // 得到0~36數(shù)字的隨機(jī)排列
{
int i1, j1;
int flag = 0;
srand(time(NULL));
random[0] = rand() % 36 ;
for (i1=1; i1<36; i1++)
{
while (1)
{
random[i1] = rand() % 36 ;
for (j1=0; j1<i1; j1++)
{
if (random[j1] == random[i1])
{
flag = 1;
break;
}
}
if (flag)
{
flag = 0;
}
else
{
break;
}
}
}
}
void judge() // 判斷當(dāng)前要進(jìn)行的操作
{
ATTSTYLE attstyle; // 攻擊類型
getpreij();
if (checkij())
{
if (area[i][j].state==unknow && choose.state==unchoose) // 打開
{
open();
userchange();
}
else if(area[i][j].state == empty)
{
if (choose.state == alchoose) // 移動(dòng)
{
if (whemove())
{
move();
cancelchoose();
userchange();
}
}
}
else
{
if (choose.state == unchoose)
{
if (area[i][j].chess.team==user && area[i][j].chess.id!=qi) //選定
{
choosearea();
}
}
else
{
if (area[i][j].state!=unknow) // 攻擊
{
attstyle = wheattack();
if (attstyle == comatt)
{
kill();
cancelchoose();
userchange();
}
else if (attstyle == preatt)
{
perishtogether();
cancelchoose();
userchange();
}
else
{
;
}
}
}
}
if (!judgeunknow()) // 在所有棋子都翻開的情況下判斷輸贏
{
judgebunko();
}
}
}
int judgeunknow()
{
int i1, i2;
int num = 0;
for (i1=0; i1<6; i1++)
{
for (i2=0; i2<6; i2++)
{
if (area[i1][i2].state == unknow)
{
num++;
}
}
}
return num;
}
// 選擇區(qū)域
void choosearea()
{
choose.i = i;
choose.j = j;
choose.state = alchoose;
setlinecolor(GREEN);
rectangle(choose.i*CHESIZE, choose.j*CHESIZE, choose.i*CHESIZE+CHESIZE, choose.j*CHESIZE+CHESIZE);
}
// 取消選定
void cancelchoose()
{
setlinecolor(WHITE);
rectangle(choose.i*CHESIZE, choose.j*CHESIZE, choose.i*CHESIZE+CHESIZE, choose.j*CHESIZE+CHESIZE);
choose.state = unchoose;
}
// 當(dāng)前鼠標(biāo)所在區(qū)域
void getpreij()
{
i = (mmsg.x-RESETX) / CHESIZE;
j = -(mmsg.y-RESETY) / CHESIZE;
}
// 檢查鼠標(biāo)是否在有效區(qū)域內(nèi)
int checkij()
{
if ((i==7 || i==8) && j==5)
{
gamehelp();
return 0;
}
else if ((i==7 || i==8) && j==4)
{
if (!lockchessboard)
{
surrender();
}
return 0;
}
else if ((i==7 || i==8) && j==3)
{
if (!lockchessboard)
{
peace();
}
return 0;
}
else if ((i==7 || i==8) && j==2)
{
resetchessboard();
lockchessboard = 0;
return 0;
}
else if ((i==7 || i==8) && j==1)
{
quit();
return 0;
}
else
{
if (!lockchessboard)
{
if ((i>=0 && i<=5 && j>=0 && j<=5 && (mmsg.x-RESETX)>0 && -(mmsg.y-RESETY)>0))
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
}
// 打開操作
void open()
{
setfillcolor(BLACK);
floodfill(area[i][j].crdld.x, area[i][j].crdld.y, WHITE);
setaspectratio(1, 1);
if (area[i][j].chess.team == blue)
{
settextcolor(BLUE);
}
else if (area[i][j].chess.team == red)
{
settextcolor(RED);
}
else
{
settextcolor(MAGENTA);
}
settextstyle(35, 18, "黑體");
outtextxy(area[i][j].crdld.x, -area[i][j].crdld.y-CHESIZE+2, area[i][j].chess.image);
area[i][j].state = exist;
setaspectratio(1, -1);
}
// 判斷是否能移動(dòng)
int whemove()
{
if (area[choose.i][choose.j].chess.id==fei || area[choose.i][choose.j].chess.id==sheng
|| area[choose.i][choose.j].chess.id==shen)
{
if (choose.i==i && abs(choose.j-j)<=5 || choose.j==j && abs(choose.i-i)<=5)
{
return 1;
}
else
{
return 0;
}
}
else if (area[choose.i][choose.j].chess.id == xian)
{
return 1;
}
else
{
if (choose.i==i && abs(choose.j-j)==1 || choose.j==j && abs(choose.i-i)==1)
{
return 1;
}
else
{
return 0;
}
}
}
// 移動(dòng)
void move()
{
setfillcolor(BLACK);
floodfill(area[choose.i][choose.j].crdld.x, area[choose.i][choose.j].crdld.y, GREEN);
setaspectratio(1, 1);
if (area[choose.i][choose.j].chess.id==gong && area[choose.i][choose.j].chess.scoopc>0)
{
if (area[choose.i][choose.j].chess.team == blue)
{
settextcolor(LIGHTBLUE);
}
else
{
settextcolor(LIGHTRED);
}
}
else
{
if (user == blue)
{
settextcolor(BLUE);
}
else
{
settextcolor(RED);
}
}
settextstyle(35, 18, "黑體");
outtextxy(area[i][j].crdld.x, -area[i][j].crdld.y-CHESIZE+2, area[choose.i][choose.j].chess.image);
area[choose.i][choose.j].state = empty;
area[i][j].state = exist;
area[i][j].chess = area[choose.i][choose.j].chess;
setaspectratio(1, -1);
}
// 判斷是否能攻擊,并返回攻擊類型
ATTSTYLE wheattack()
{
if (whemove())
{
if (area[choose.i][choose.j].chess.id == gong)
{
return judgegong();
}
else if (area[choose.i][choose.j].chess.id == zha)
{
return judgezha();
}
else
{
return judgecom();
}
}
else
{
return noatt;
}
}
// 判斷工兵
ATTSTYLE judgegong()
{
if (area[i][j].chess.team != white)
{
if (area[choose.i][choose.j].chess.team != area[i][j].chess.team)
{
if (area[i][j].chess.id==gong || area[i][j].chess.id==zha)
{
return preatt;
}
else if (area[i][j].chess.id == qi)
{
if (area[choose.i][choose.j].chess.scoopc == 0)
{
return noatt;
}
else if (area[choose.i][choose.j].chess.scoopc == 1)
{
area[choose.i][choose.j].chess = datachess[14];
getteam();
return comatt;
}
else if (area[choose.i][choose.j].chess.scoopc == 2)
{
area[choose.i][choose.j].chess = datachess[16];
getteam();
return comatt;
}
else if (area[choose.i][choose.j].chess.scoopc == 3)
{
area[choose.i][choose.j].chess = datachess[17];
getteam();
return comatt;
}
else
{
area[choose.i][choose.j].chess = datachess[18];
getteam();
return comatt;
}
}
else
{
return noatt;
}
}
else
{
return noatt;
}
}
else
{
if (area[i][j].chess.id == lei)
{
area[choose.i][choose.j].chess.scoopc++;
return comatt;
}
else
{
change();
return comatt;
}
}
}
// 判斷炸彈
ATTSTYLE judgezha()
{
if (area[choose.i][choose.j].chess.team != area[i][j].chess.team)
{
if (area[i][j].chess.id != qi)
{
return preatt;
}
else
{
return noatt;
}
}
else
{
return noatt;
}
}
// 判斷普通人物
ATTSTYLE judgecom()
{
if (area[i][j].chess.team != white)
{
if (area[choose.i][choose.j].chess.team != area[i][j].chess.team)
{
if (area[choose.i][choose.j].chess.power==area[i][j].chess.power || area[i][j].chess.id==zha)
{
return preatt;
}
else if (area[choose.i][choose.j].chess.power > area[i][j].chess.power)
{
return comatt;
}
else
{
return noatt;
}
}
else
{
return noatt;
}
}
else
{
if (area[i][j].chess.id == lei)
{
return noatt;
}
else
{
change();
return comatt;
}
}
}
// 變身
void change()
{
int x;
x = rand() % 50;
if (x == 6)
{
area[choose.i][choose.j].chess = datachess[15];
getteam();
}
else
{
x = rand() % 4;
if (x == 3)
{
x = rand() % 2;
if (x == 0)
{
area[choose.i][choose.j].chess = datachess[7];
}
else
{
area[choose.i][choose.j].chess = datachess[8];
}
getteam();
}
else
{
x = rand() % 6;
area[choose.i][choose.j].chess = datachess[x];
getteam();
}
}
}
// 對(duì)棋子所屬方賦值
void getteam()
{
if (user == blue)
{
area[choose.i][choose.j].chess.team = blue;
}
else
{
area[choose.i][choose.j].chess.team = red;
}
}
// 殺死對(duì)方
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;
}
// 切換執(zhí)棋方
void userchange()
{
if (user == blue)
{
user = red;
setfillcolor(RED);
floodfill(-1, -1, WHITE);
}
else
{
user = blue;
setfillcolor(BLUE);
floodfill(-1, -1, WHITE);
}
}
// 判斷輸贏
void judgebunko()
{
int i1, j1;
int num1 = 0, num2 = 0;
for (i1=0; i1<6; i1++)
{
for (j1=0; j1<6; j1++)
{
if (area[i1][j1].state != empty)
{
if (area[i1][j1].chess.team==red && area[i1][j1].chess.id!=qi)
{
num1++;
}
else if(area[i1][j1].chess.team==blue && area[i1][j1].chess.id!=qi)
{
num2++;
}
}
}
}
if (num1==0 && num2!=0)
{
bluewin();
}
if (num2==0 && num1!=0)
{
redwin();
}
if (num1==0 && num2==0)
{
peace();
}
}
// 藍(lán)方勝
void bluewin()
{
setaspectratio(1, 1);
settextcolor(BLUE);
settextstyle(50, 20, "黑體");
outtextxy(CHESIZE, -CHESIZE*8, "藍(lán)方勝利");
setaspectratio(1, -1);
setfillcolor(BLUE);
floodfill(-1, -1, WHITE);
lockchessboard = 1; //鎖定棋盤
}
// 紅方勝
void redwin()
{
setaspectratio(1, 1);
settextcolor(RED);
settextstyle(50, 20, "黑體");
outtextxy(CHESIZE, -CHESIZE*8, "紅方勝利");
setaspectratio(1, -1);
setfillcolor(RED);
floodfill(-1, -1, WHITE);
lockchessboard = 1;
}
// 和棋
void peace()
{
setaspectratio(1, 1);
settextcolor(GREEN);
settextstyle(50, 20, "黑體");
outtextxy(CHESIZE, -CHESIZE*8, "握手言和");
setaspectratio(1, -1);
setfillcolor(GREEN);
floodfill(-1, -1, WHITE);
lockchessboard = 1;
}
// 投降
void surrender()
{
if (user == blue)
{
redwin();
}
else
{
bluewin();
}
}
// 重置
void resetchessboard()
{
cleardevice();
init();
}
// 游戲說(shuō)明
void gamehelp()
{
getimage(&image, -10, -10, 500, 350);
cleardevice();
setorigin(50, 0);
setaspectratio(1, 1);
settextcolor(RED);
settextstyle(14, 0, "黑體");
outtextxy(-50, 0, "注:單擊鼠標(biāo)左鍵回到游戲界面");
settextcolor(WHITE);
settextstyle(24, 0, "黑體");
outtextxy(230, 5, "游戲說(shuō)明");
settextstyle(12, 0, "宋體");
outtextxy(0, 35, "棋盤大小:6*6; 棋子總數(shù):36; 敵對(duì)雙方:紅,藍(lán)");
outtextxy(0, 60, "棋子類別:紅棋(紅方操作,14個(gè)) 藍(lán)棋(藍(lán)方操作,14個(gè)) 紫棋(功能棋,8個(gè))");
outtextxy(0, 85, "紅棋(藍(lán)棋)類型:司令,軍長(zhǎng),師長(zhǎng),旅長(zhǎng),團(tuán)長(zhǎng),營(yíng)長(zhǎng),連長(zhǎng),班長(zhǎng),軍旗,工兵*2,炸彈*2.");
outtextxy(0, 100, "紫棋類型:地雷*4,變身棋*4. 注:'*'后面表示該棋的數(shù)量,沒(méi)注則只有一個(gè)");
outtextxy(0, 125, "規(guī)則說(shuō)明:1.司令最大,工兵最小,大的吃小的,一樣就同歸于盡,");
outtextxy(textwidth("規(guī)則說(shuō)明:1."), 140, "炸彈能炸紫棋和敵方除軍旗外所有的棋(炸彈也會(huì)消失)." );
outtextxy(textwidth("規(guī)則說(shuō)明:"), 155, "2.工兵可挖地雷,挖完后可扛對(duì)方棋變身(挖的雷越多,變成的人物越厲害).");
outtextxy(textwidth("規(guī)則說(shuō)明:"), 170, "3.人物棋可吃變,吃后能變成工兵~軍長(zhǎng)中的一種,有一定幾率變成隱藏BOSS.");
outtextxy(textwidth("規(guī)則說(shuō)明:"), 185, "4.人物棋可自殺(算一次操作).");
outtextxy(textwidth("規(guī)則說(shuō)明:"), 200, "5.執(zhí)棋方進(jìn)行完一次有效操作后,就換對(duì)方執(zhí)棋(邊框顏色表當(dāng)前執(zhí)棋方).");
outtextxy(textwidth("規(guī)則說(shuō)明:"), 215, "6.一方棋子(軍旗除外)全被消滅,就算輸; 同時(shí)全部沒(méi)有,則和棋.");
outtextxy(0, 240, "執(zhí)棋方能進(jìn)行的操作:操作1:打開棋子(算一次操作).");
outtextxy(textwidth("執(zhí)棋方能進(jìn)行的操作:"), 255, "操作2:攻擊.");
outtextxy(textwidth("執(zhí)棋方能進(jìn)行的操作:"), 270, "操作3:移動(dòng).");
outtextxy(textwidth("執(zhí)棋方能進(jìn)行的操作:"), 285, "操作4:工兵(已挖雷)扛旗.");
outtextxy(textwidth("執(zhí)棋方能進(jìn)行的操作:"), 300, "操作5:吃變身卡.");
outtextxy(textwidth("執(zhí)棋方能進(jìn)行的操作:"), 315, "操作6:自殺.");
outtextxy(0, 340, "實(shí)施游戲操作說(shuō)明(鼠標(biāo)操作):實(shí)施操作1:選擇要打開棋子所在的區(qū)域,單擊.");
outtextxy(textwidth("實(shí)施游戲操作說(shuō)明(鼠標(biāo)操作):"), 355, "實(shí)施操作2~5:單擊選中主動(dòng)方(棋子邊框會(huì)變綠)");
outtextxy(textwidth("實(shí)施游戲操作說(shuō)明(鼠標(biāo)操作):實(shí)施操作2~5:"), 370, "再單擊選中被動(dòng)方.");
outtextxy(textwidth("實(shí)施游戲操作說(shuō)明(鼠標(biāo)操作):"), 385, "實(shí)施操作6:選中己方棋子,單機(jī)鼠標(biāo)的中鍵.");
settextcolor(RED);
outtextxy(textwidth("實(shí)施游戲操作說(shuō)明(鼠標(biāo)操作):"), 400,"注:要進(jìn)行其他操作,必先撤銷當(dāng)前選定(單擊右鍵撤銷)");
settextcolor(WHITE);
setlinecolor(WHITE);
line(-30, 420, 570, 420);
outtextxy(0, 425, "人物棋等級(jí)一覽(等高殺等小):工1 班2 連3 營(yíng)4 團(tuán)5 旅6 師7");
outtextxy(textwidth("人物棋等級(jí)一覽(等高殺等小):"), 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);
}
// 退出游戲
void quit()
{
closegraph();
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:c/c++中struct定義、聲明、對(duì)齊方式解析
欄 目:C語(yǔ)言
下一篇:C語(yǔ)言文件打開的模式
本文標(biāo)題:C語(yǔ)言自定義軍旗游戲源碼
本文地址:http://m.jygsgssxh.com/a1/Cyuyan/873.html
您可能感興趣的文章
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用函數(shù)刪除字符
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)式函數(shù)庫(kù)
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)數(shù)怎么表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫分段 用c語(yǔ)言表示分段函數(shù)
- 04-02c語(yǔ)言編寫函數(shù)冒泡排序 c語(yǔ)言冒泡排序法函數(shù)
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段函數(shù)
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎么打出三角函數(shù)的值
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求階乘


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置


