基于easyX的颜色侵略小游戏

是挺久以前做的一个东西,突然想到放上来分享一下俺的拙作,纯原创。

利用二维数组对齐进行划分,并讲状态分为被侵略与未被侵略两种状态来记录。 在旧版的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];//绘图数组
 6 static int vid[10][10];//存储状态数组
 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();//数据初始化
15      void Grph();//图像初始化
16      void Update();//对玩家的操作的相应更新
17      int Iswin();
18      void chooseimage();//玩家做出操作的相应
18      void Output();//调用绘图函数

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     }

 


1 void color_flood:: chooseimage() 

 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     }

 

 

转载于:https://www.cnblogs.com/xecet/archive/2012/04/06/2435417.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA中返回值为字母时_LeetCode#524通过删除字母匹配到字典里最长单词-java中CompareTo方法用法以及Comparator中Compare方法返回值...

import java.util.Collections;import java.util.Comparator;import java.util.List;/*524. 通过删除字母匹配到字典里最长单词给定一个字符串和一个字符串字典&#xff0c;找到字典里面最长的字符串&#xff0c;该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止…

记一次 IIS 7.0 身份验证相关的问题解决

今天项目发布到外网服务器后&#xff0c;由于项目需要读写图片&#xff0c;就需要读写图片服务器&#xff0c;上传图片时&#xff0c;老是报“没有权限”。于是&#xff0c;咨询专家后&#xff0c;找到了解决方案。 IIS 项目的属性 > 身份验证 > ASP.NET 模拟 > 启用 …

找了个学习uboot makefile的好地方 不过不让转载 那就把网址分享一下吧

http://haoyeren.blog.sohu.com/86590116.html http://blog.chinaunix.net/uid-20564848-id-3947194.html http://blog.sina.com.cn/s/articlelist_2314879471_0_1.html

关于JS中的constructor与prototype

在学习JS的面向对象过程中&#xff0c;一直对constructor与prototype感到很迷惑&#xff0c;看了一些博客与书籍&#xff0c;觉得自己弄明白了&#xff0c;现在记录如下&#xff1a; 我们都知道&#xff0c;在JS中有一个function的东西。一般人们叫它函数。比如下面的代码&…

java二级缓存技术_Java二级缓存

第一步所需导入架包log4j-api-2.10.0.jarlog4j-core-2.10.0.jarmybatis-3.4.1.jarmysql-connector-java-5.1.38.jar第二步开始配置数据库的连接br> "http://mybatis.org/dtd/mybatis-3-config.dtd">第三步(文件放在src根目录问件下)日志配置第四步&#xff…

resolv.conf

文件/etc/resolv.conf配置DNS客户&#xff0c;它包含了主机的域名搜索顺序和DNS服务器的地址&#xff0c;每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件&#xff1a; search mydom.edu.cnnameserver 210.34.0.14nameserver 210.34.0.2合法的参数及…

php mvc 路由,PHP手写MVC (五)—— 路由

路由是一个框架中必不可少的组件&#xff0c;其作用是把 URL 按照预定规则解析到特定控制器中。我们在这里定义了两种路由规则&#xff1a;查询字符串。在路径后面使用问号加参数&#xff0c;多个参数用 & 分隔。在配置文件使用 querystring 表示#控制器/方法?参数1值1&am…

ifcfg-eth0 配置

文件&#xff1a;/etc/sysconfig/network-scripts/ifcfg-eth0 以下各值常见于所有的基本配置文件中&#xff1a; * DEVICEname,这里name是物理设备的名字&#xff08;动态分配的PPP设备应当除外&#xff0c; 它的名字是“逻辑名”。 * IPADDRaddr, 这里addr是IP…

我的收藏 - 音频处理相关网站

自己平时用chrome浏览器&#xff0c;用Google帐号同步标签&#xff0c;但有时还是容易丢失一些网址&#xff0c;因此做个简单的同步&#xff01;慢慢更新中... 音频相关算法 http://www.jjj.de/fxt/ http://www.dspguide.com/ http://www.musicdsp.org/files/Audio-EQ-Cookb…

php获取跳转前的地址,PHP获取短链接跳转后的真实地址和响应头信息的方法

PHP获取短链接跳转后的真实地址和响应头信息的方法获取到一个短连接&#xff0c;需要将短连接转换成真实的网址&#xff0c;通过查资料&#xff0c;发现 PHP 提供了一个函数 get_headers() &#xff0c;可以完成这个任务&#xff0c;先把 头部信息获取到&#xff0c;然后再分析…

安装配置opensips过程记录

本文操作系统为CentOS&#xff0c;所用Opensips版本为1.8.2。 Update2013/6/27: 版本1.9.1也已验证通过&#xff0c;下载地址为http://opensips.org/pub/opensips/latest/src/opensips-1.9.1_src.tar.gz 安装CentOS &#xff08;若已有环境可跳过此步骤&#xff09; 1、安装虚拟…

eclipse快捷键Alt + /

很多书籍中Eclipse的快捷键Ctrl Space在中文系统中被Alt / 代替转载于:https://www.cnblogs.com/jubincn/archive/2012/04/19/3381206.html

Linux Kbuild文档 1

Linux内核配置方式1.1 概述 Linux内核源代码组织了一个配置系统&#xff0c;该配置系统可以生成内核配置菜单&#xff0c;方便内核配置。配置系统主要包含Makefile、Kconfig和配置工具&#xff0c;可以生成配置界面。其中&#xff0c;配置界面是通过配置工具来生成的&#xff…

依赖注入原理 php,PHP依赖注入原理与用法分析

本文实例讲述了PHP依赖注入原理与用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;引言依然是来自到喜啦的一道面试题&#xff0c;你知道什么是依赖注入吗&#xff1f;依赖注入(DI)的概念虽然听起来很深奥&#xff0c;但是如果你用过一些新兴的php框架的话&#xf…

jQuery1.7.2正式发布了

下载地址 jQuery1.7.2正式发布了&#xff0c;下载地址&#xff1a; http://code.jquery.com/jquery-1.7.2.min.js (minified, production)http://code.jquery.com/jquery-1.7.2.js (unminified, debug)注&#xff1a;如果你正在使用jQuery Mobile&#xff0c;请使用最新的jQuer…

Linux Kbuild文档 2

2. Kconfig linux在2.6版本以后将配置文件由原来的config.in改为Kconfig&#xff0c;对于Kconfig的语法在内核源代码/Documentation/kbuild/kconfig-language.txt中做了详细的说明。 2.1 Kconfig的树状关系 Kconfig的配置选项是以树的形式组织的&#xff0c;如下所示所示&am…

php upw5.5,UPW

PHP EngineerResponsibilities:●Analysis and module design of software system&#xff1b;●Development and design of new products, and be able to write the core module code independently&#xff1b;●Responsible for the maintenance and upgrading of existing…

cocos2d对动画的各种操作

关于动画的各种操作&#xff0c;总结一下以便以后复习查找。 内容简要: 1、瞬时动作2、延时动作 3、 组合动作 4、动画 5、速度变化6、函数调用7、创建动作动画8、控制动画帧的速度 原文地址&#xff1a; http://blog.csdn.net/dingkun520wy/article/details/7014233 --…

matlab的灰色关联,五种灰色关联度分析matlab代码

《五种灰色关联度分析matlab代码》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《五种灰色关联度分析matlab代码(3页珍藏版)》请在人人文库网上搜索。1、灰色邓关联分析% p12-the study on the grey relational degree and its applicationFunction R1gld_deng(x)ssi…

Linux Kbuild文档 3

3. Kbuild Makefile Linux内核源代码是通过Makefile组织编译的&#xff0c;Linux2.6内核Makefile的许多特性和2.4内核差别很大&#xff0c;在内核目录的documention/kbuild/makefiles.txt中有详细的说明。 3.1 Makefile的组织结构 Linux内核的Makefile分为5个部分&#xff0…