基于vc的连连看游戏设计内容摘要:
个图标导入进来,注意图标的截取大小最好是 32*32,另外,创建 1 个空图标以备消除时替代 , 如 图 9 所示。 图 9 导入图标 内江师范学院本科毕业设计 14 ( 4) 切换到 Class View 视图,左键连击两次 CEX_lianliankanDlg,在 public 成员函数中添加如下成员变量: Class CEX_lianliankanDlg : public CDialog { // Construction public: void OnButton(UINT nID)。 UINT icon[240]。 CTime endTime。 //定义结束时间 CTime beginTime。 //定义开始时间 int count。 CButton* cb2。 //点击的第一个按钮指针变量 CButton* cb1。 //点击的第二个按钮指针变量 HICON blank。 HICON icon2。 HICON icon1。 int state。 CEX_lianliankanDlg(CWnd* pParent = NULL)。 // standard constructor // Dialog Data //{{AFX_DATA(CEX_lianliankanDlg) ( 5)修改构造函数 展开 CEX_lianliankanDlg,点击 CEX_lianliankanDlg(CWnd *pParent=NULL),然后在里面添加以下程序代码(部分省略): //{{AFX_DATA_INIT(CEX_lianliankanDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()LoadIcon(IDR_MAINFRAME)。 state=1。 //state 的初始值为 1 blank= AfxGetApp()LoadIcon(IDI_ICON121)。 //空白图标 // count=0。 UINT temp[]={IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4,IDI_ICON5,IDI_ICON6,IDI_ICON7,IDI_ICON8,IDI_ICON9,IDI_ICON10,IDI_ICON11,IDI_ICON12, „„ IDI_ICON107,IDI_ICON108,IDI_ICON109,IDI_ICON110,IDI_ICON111,IDI_ICON112,IDI_ICON113,IDI_ICON114,IDI_ICON115,IDI_ICON116,IDI_ICON117,IDI_ICON118,IDI_ICON119,IDI_ICON120, IDI_ICON1,IDI_ICON2,IDI_ICON3......IDI_ICON118,IDI_ICON119,IDI_ICON120}。 //共 240 个按钮, 120 个图标,有两个按钮的图标是相同的 // for(int i=0。 i240。 i++) 内江师范学院本科毕业设计 15 { icon[i]=temp[i]。 //把图标导给图标数组 // } 程序说明: CEX_lianliankanDlg::CEX_lianliankanDlg()中的代码是对成员函数进行初始化:state 表示两次 点击这次点击或上次点击; count 表示目前已经找出来的相同图标的数目,初始值为 0(即没有找到); icon 数组存放 256 个图标的编号。 ( 6) 添加消息映射 在 BEGIN_MESSAGE_MAP(CEX_lianliankanDlg, CDialog)中添加 ON_ COMMAND_RANGE(IDC_BUTTON1,IDC_BUTTON240,OnButton)的消息映射,如下: BEGIN_MESSAGE_MAP(CEX_lianliankanDlg, CDialog) //{{AFX_MSG_MAP(CEX_lianliankanDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND_RANGE(IDC_BUTTON1,IDC_BUTTON240,OnButton) //添加程序代码 //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CEX_lianliankanDlg message handlers 添加以上程序代码主要是在每次点击按钮时,系统都能跳到同一个函数里面去运行。 ( 7) 在 CGameTestDlg::OnInitDialog()函数中添加初始化代码,中间部分省略,如下所示: BOOL CEX_lianliankanDlg::OnInitDialog() { CDialog::OnInitDialog()。 srand((unsigned)time(NULL))。 for(int i=0。 i100。 i++) { int m=rand()%240。 int n=rand()%240。 UINT temp=icon[m]。 icon[m]=icon[n]。 icon[n]=temp。 } HICON Icon1=AfxGetApp()LoadIcon(icon[1])。 (Icon1)。 内江师范学院本科毕业设计 16 HICON Icon2=AfxGetApp()LoadIcon(icon[2])。 (Icon2)。 HICON Icon3=AfxGetApp()LoadIcon(icon[3])。 (Icon3)。 HICON Icon4=AfxGetApp()LoadIcon(icon[4])。 (Icon4)。 HICON Icon5=AfxGetApp()LoadIcon(icon[5])。 (Icon5)。 HICON Icon6=AfxGetApp()LoadIcon(icon[6])。 (Icon6)。 HICON Icon7=AfxGetApp()LoadIcon(icon[7])。 (Icon7)。 HICON Icon8=AfxGetApp()LoadIcon(icon[8])。 (Icon8)。 HICON Icon9=AfxGetApp()LoadIcon(icon[9])。 (Icon9)。 HICON Icon10=AfxGetApp()LoadIcon(icon[10])。 (Icon10)。 . HICON Icon235=AfxGetApp()LoadIcon(icon[235])。 (Icon235)。 HICON Icon236=AfxGetApp()LoadIcon(icon[236])。 (Icon236)。 HICON Icon237=AfxGetApp()LoadIcon(icon[237])。 (Icon237)。 HICON Icon238=AfxGetApp()LoadIcon(icon[238])。 (Icon238)。 HICON Icon239=AfxGetApp()LoadIcon(icon[239])。 (Icon239)。 HICON Icon240=AfxGetApp()LoadIcon(icon[0])。 (Icon240)。 beginTime=CTime::GetCurrentTime()。 // Add “ About...“ menu item to system menu. 程序说明: CEX_lianliankanDlg::OnInitDialog()中的代码主要对游戏状体初始化,通过调用 200 次随机函数,将图标顺序打乱,并赋给每个按钮,以实现游 戏开始图标随机分布的效果。 同时,将当前时间记录在 beginTime 变量中。 ( 9) 添加一个名为 OnButton 的成员函数,并为该函数编写如下所示的代码。 右击CEX_lianliankanDlg,选择 Add Member Function,在对话框内输入 的内容 如图 7 所示。 内江师范学院本科毕业设计 17 图 10 添加 OnButton 成员函数图 添加 OnButton 成员函数,代码如下: void CEX_lianliankanDlg::OnButton(UINT nID) { state=state。 //最初 state=1,第一次进去 state=1 CButton* cb=(CButton*)GetDlgItem(nID)。 if(state0) { cb1=cb。 //记下按钮的 ID 号 icon1=cbGetIcon()。 //记下图标的 ID 号 } //点击第一个按钮的时候,相应出现的图标 // else if(state0) //第二次进去 state=1,如此,每次取反 // { cb2=cb。 icon2=cbGetIcon()。 if((icon1==icon2)amp。 amp。 (cb1!=cb2)amp。 amp。 (cb1GetIcon()!=blank)) //保证图标相同,按钮不同且不能为空白图标 // { cb1SetIcon(blank)。 cb2SetIcon(blank)。 //图标相 同,则给两个按钮赋予空白图标 // count+=2。 //消除后,按钮数自动加 2// if(count==240) //当按钮数 =240 时,代表所有图标已经消除,游戏完成 { endTime=CTime::GetCurrentTime()。 CTimeSpan duration=endTimebeginTime。 //记录游戏时间 MessageBox( “ 恭 喜。 你 已 经 完 成 了 游 戏。 用 时 :“ +(“ %M“ )+“ 分 “ +(“ %S“ )+“ 秒 “ )。 } } 内江师范学院本科毕业设计 18 else { } UpdateData(FALSE)。 } } 程序说明: 游戏过程中点击图标会调用 CEX_lianliankanDlg::OnButton(UINT nID)函数,该成员函数为游戏运行的主要函数,程序中也有注释,首先改变 state 的值,根据其等于 1还是 1 来判断用户是否已点了两次,如果是点了两次,则比较这两点的图标是否相同,如果相同,则将 count 的值 +2, 同时消去这两次点击的图标。 我们不断重复上面描述的功能,直到当 count 的值 =256 时,说明用户已经成功完成了游戏,并记录和显示游戏完成时间 , 其流程框图如 图 11 所示。 内江师范学院本科毕业设计 19 相同 否 图 11 游戏规则流程图 功能选项模块设计 界面设计基本完成,在上面步骤完成后,系统自动。基于vc的连连看游戏设计
相关推荐
7 层协议相比, TCP/IP 协议只有 4个层次。 通常说的 TCP/IP 是一组协议的总称, TCP/IP 实际上是一个协议族,包括 100 多个相互关联的协议,其中 IP(Inter Protocol, 网际协议 )是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制协议 )和 UDP(User Datagram Protocol
动补偿、汽车图象摄影对比安全检测、自动消防灭火系统等。 在我国的停车产业发展中还存在一些问题,如没有统一的技术标准;多数产品是仿效或引进国外技术制造,技术水平低;缺少具有一定规模的企业,生产能力不足;市场竞争无序,个别企业为抢占市场,采取低价竞争;缺少科研 设计单位的参与,技术创新能力严重不足;政策不配套,对停车产业发展和管理严重滞后等。 解决上述问题,需要我们在政策市场
下所示: (1) 信号引脚的功能介绍 ① 输入 /输出口线 ~ P0 口的 8位双向口线; ~ P1 口的 8位双向口线; ~ P2 口的 8位双向口线; ~ P3 口的 8位双向口线。 ② ALE 地址锁存控制信号 在系统扩展时, ALE 用于控制把 P0 口输出的低 8位地址送入锁存器锁存起 来,以实现低位地址和数据的分时传送,此外由于 ALE 是以六分之一的晶振频率的固定频率输出正脉冲
, FU 为熔断器。 工作原理为:当对应于 T 的内部继电器的状态为 1 时,发光二极管导通发光,不论外接电源极性如何都能使双向晶闸管 T 导通,负载得电。 同时输出指示灯 LED 点亮。 表示该输出点接通;当对应于 T 的内部继电器的状态为 0 时 T 关断,负载失电,指示灯 LED 灭。 双向晶闸管输出型 PLC 的负载电源,可以根据负载的需要选用直流或交流。 ( 3)继电器输出单元
. 1u FV C CV C CO U T 图 26 红外 对射 电路 如图 26 所示,红外线发射电路以时钟定时集成芯片 LM393AD 为核心 ,可以将模拟量转化为数字量。 LM393 是由两个独立的、高精度电压比较器组成的集成电路,失调电压低,最大为。 它专为获得宽电压范围、单电源供电而设计,也可以以双电源供电;而且无论电源电压大小,电源消耗的电流都很低。 它还有一个特性:即使是单电源供电
N I JMBMAMA MBMAMB电 机 驱 动 原 理 图 8 电机驱动 原理图 地址分配和连接 只列出和本系统相关的、关键部分的单片机与各个功能管脚的连接和相关的地址分配: 、 :输出管脚,连接驱动芯片 TA7267BP 的 2 管脚。 单片机通过改变这两个管脚的电平,实现 4 种电机状态的控制指令。 数码管 LED 显示 原理 引脚功能 如图 9 所示: ● 段选( a,b,c,d,e