基于easyX的颜色侵略小游戏
是挺久以前做的一個東西,突然想到放上來分享一下俺的拙作,純原創(chuàng)。
利用二維數(shù)組對齊進行劃分,并講狀態(tài)分為被侵略與未被侵略兩種狀態(tài)來記錄。 在舊版的easyX可以運行。
源碼及exe下載?
頭文件:
??1?#include?<graphics.h>?
??2?#include?<iostream>?
?3?const?int?color_num=6;?4?static?int?steps=14;
?5?static?int?List[10][10];//繪圖數(shù)組
?6?static?int?vid[10][10];//存儲狀態(tài)數(shù)組
?7?static?char?in[3];
?8?static?int?a=0;
?9?class?color_flood
10?{
11??????void?Image1(int?i,int?j);//被侵略方塊圖像繪制
12??????void?Image2(int?i,int?j);//未被侵略圖像繪制
13?public:
14??????color_flood();//數(shù)據(jù)初始化
15??????void?Grph();//圖像初始化
16??????void?Update();//對玩家的操作的相應(yīng)更新
17??????int?Iswin();
18??????void?chooseimage();//玩家做出操作的相應(yīng)
18??????void?Output();//調(diào)用繪圖函數(shù)
20};
?.cpp文件:
???0?#include "FLOOD_IT_v1.0.h"
??1?color_flood::color_flood()
?2?????{?3?????????memset(vid,0,sizeof(vid));
?4?????????memset(List,0,sizeof(List));
?5?????????randomize();
?6?????????for(int?i=1;i<9;++i)
?7?????????????for(int?j=1;j<9;++j)
?8?????????????????List[i][j]=random(6)+1;//隨機顏色????
?9?
10?????????vid[1][1]=1;
11?????????a=List[1][1];
12?????????steps=14;
13?????} ?1?void?color_flood::?Grph()
?2?????{
?3?????????memset(vid,0,sizeof(vid));
?4?????????memset(List,0,sizeof(List));
?5?????????randomize();
?6?????????for(int?i=1;i<9;++i)
?7?????????????for(int?j=1;j<9;++j)
?8?????????????????List[i][j]=random(6)+1;//隨機顏色????
?9?
10?????????vid[1][1]=1;
11?????????a=List[1][1];
12?????????steps=14;
13?????????initgraph(800,600);
14?????????setbkcolor(WHITE);
15?????????setcolor(BLACK);
16??????????setlinestyle(PS_DASH,1,6);
17?????????rectangle(143,148,428,432);
18?????????rectangle(30,100,770,570);
19?????????line(560,100,560,569);
20?????????setfillstyle(DARKGRAY);
21?????????bar(600,120,730,200);
22?????????rectangle(600,120,730,200);
23?????????setlinestyle(PS_DASH,1,1);
24?????????line(560,230,770,230);
25?????????line(560,360,770,360);
26?????????line(560,450,770,450);
27?????????setfont(25,0,"Arial?Black");
28?????????outtextxy(620,250,"STEPS:");
29?????????//outtextxy(620,380,"SCORE:");
30?????????setfontbkcolor(DARKGRAY);
31?????????outtextxy(610,140,"NEW?GAME");
32?????????setfont(55,0,"Arial?Black");
33?????????outtextxy(100,40,"FLOOD?IT!");?
34 }?
?1?????void?color_flood::?Update()
?2?????{
?3?????????for(int?i=1;i<9;++i)
?4?????????{????for(int?j=1;j<9;++j)
?5?????????????{
?6?????????????????if(vid[i][j]==1)
?7?????????????????????continue;
?8?????????????????else
?9?????????????????{
10?????????????????????if((vid[i][j-1]==1||vid[i-1][j]==1||vid[i][j+1]==1||vid[i+1][j]==1)&&List[i][j]==a)
11?????????????????????????vid[i][j]=1;
12?????????????????}
13?????????????}
14?????????}
15?????}
?
?1?void?color_flood::?Image1(int?i,int?j)?2?????{
?3?????????switch(a)
?4?????????{
?5?????????case?1:{setfillstyle(RED);break;}
?6?????????case?2:{setfillstyle(BLUE);break;}
?7?????????case?3:{setfillstyle(GREEN);break;}
?8?????????case?4:{setfillstyle(YELLOW);break;}
?9?????????case?5:{setfillstyle(MAGENTA);break;}
10?????????case?6:{setfillstyle(BROWN);break;}
11?????????}
12?????????bar(i*35+145,j*35+150,(i+1)*35+145,(j+1)*35+150);
13?????????}?
?1?????void?color_flood::?Image2(int?i,int?j)
?2?????{
?3?????????switch(List[i+1][j+1])
?4?????????{
?5?????????case?1:{setfillstyle(RED);break;}
?6?????????case?2:{setfillstyle(BLUE);break;}
?7?????????case?3:{setfillstyle(GREEN);break;}
?8?????????case?4:{setfillstyle(YELLOW);break;}
?9?????????case?5:{setfillstyle(MAGENTA);break;}
10?????????case?6:{setfillstyle(BROWN);break;}
11?????????}
12?????????bar(i*35+145,j*35+150,(i+1)*35+145,(j+1)*35+150);
13?????}
?
?1?????void?color_flood::?Output()?2?????{
?3?????????for(int?i=1;i<9;++i)
?4?????????{
?5?????????????for(int?j=1;j<9;++j)
?6?????????????{
?7?????????????????if(vid[i][j]==0)
?8?????????????????????Image2(i-1,j-1);
?9?????????????????else
10?????????????????????Image1(i-1,j-1);
11?????????????}
12?????????}
13?
14?????????//*str=steps;
15?????????}?
?1?int?color_flood::?Iswin()
?2?????{
?3?????????int?n=0;
?4?????????for(int?i=1;i<9;++i)
?5?????????????for(int?j=1;j<9;++j)
?6?????????????????if(vid[i][j]==1)
?7?????????????????{
?8?????????????????????n++;
?9?????????????????}
10?????????????return?n;
11?????}
?
?2?????{
?3?????????for(int?i=0;i<6;i++)
?4?????????{
?5?????????????????switch(i)
?6?????????????????{
?7?????????????????case?0:{setfillstyle(RED);break;}
?8?????????????????case?1:{setfillstyle(BLUE);break;}
?9?????????????????case?2:{setfillstyle(GREEN);break;}
10?????????????????case?3:{setfillstyle(YELLOW);break;}
11?????????????????case?4:{setfillstyle(MAGENTA);break;}
12?????????????????case?5:{setfillstyle(BROWN);break;}
13?????????????????}
14?????????????bar(90+i*40+i*30,490,130+i*40+i*30,530);
15?????????}
16?????????MOUSEMSG?msg;
17?????????msg=GetMouseMsg();
18?????????while(1)
19?????????{
20?????????????if(MouseHit!=0)
21?????????????{
22?????????????????if(msg.uMsg==WM_LBUTTONUP)
23?????????????????{
24?????????
25?????????????????????if(msg.y>490&&msg.y<530)
26?????????????????????{
27?????????????????????????if(msg.x>90&&msg.x<130)
28?????????????????????????????{a=1;--steps;}
29?????????????????????????if(msg.x>160&&msg.x<200)
30?????????????????????????????{a=2;--steps;}
31?????????????????????????if(msg.x>230&&msg.x<270)
32?????????????????????????????{a=3;--steps;}
33?????????????????????????if(msg.x>300&&msg.x<340)
34?????????????????????????????{a=4;--steps;}
35?????????????????????????if(msg.x>370&&msg.x<410)
36?????????????????????????????{a=5;--steps;}
37?????????????????????????if(msg.x>440&&msg.x<480)
38?????????????????????????????{a=6;--steps;}
39?????????????????????}
40?????????????????????if(msg.x>600&&msg.x<730&&msg.y>120&&msg.y<200)
41?????????????????????{
42?????????????????????????Grph();
43?????????????????????}
44?????????????????????msg.mkLButton=0;????????
45?
46?????????????????}
47?
48?????????????????break;
49?????????????}
50?????????????else
51?????????????????continue;
52?????????}
53?????}
??1?int?main()
?2?????{?3?????????color_flood?img;
?4?????????img.Grph();
?5?????????int?b;
?6?????????while(1)
?7?????????{????????
?8?????????????img.Fre();
?9?????????????img.Output();
10?????????????img.chooseimage();
11?????????????img.Update();
12?????????????if(steps==-1)
13?????????????{
14?????????????????setbkcolor(WHITE);
15?????????????????setfont(30,0,"Arial?Black");
16?????????????????outtextxy(100,300,"You?Lose!??Press?any?key?to?New?Game");
17?????????????????getch();
18?????????????????img.Grph();
19?????????????}
20?????????????b=img.Iswin();
21?????????????if(b==64)
22?????????????{
23?????????????????img.Output();
24?????????????????setbkcolor(WHITE);
25?????????????????setfont(30,0,"Arial?Black");
26?????????????????outtextxy(100,300,"You?Win!?Press?any?key?to?New?Game");
27?????????????????getch();
28?????????????????img.Grph();
29?????????????}
30?????????}
31?????????getch();
32?????????closegraph();
33?????????return?0;
34?????}
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xecet/archive/2012/04/06/2435417.html
總結(jié)
以上是生活随笔為你收集整理的基于easyX的颜色侵略小游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用flex和bison实现的sql引擎
- 下一篇: 阿里巴巴JAVA编码规范考试