标签:绘图 判断 ems device 位置 std srand 保存 需要
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <easyx.h> #include <graphics.h> #include <time.h> #include <tchar.h> int map[4];//数组保存的是黑块 int n = 0; // void init()//初始化黑方块区域 { for (int i = 0; i < 4; i++) { map[i] = rand() % 4; //取随机值0 - 3; } } void draw()//贴背景图片 { BeginBatchDraw(); cleardevice();//把之前的画板清楚 setlinecolor(RED);//设置颜色 setfillcolor(WHITE); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { //绘制白色矩形 fillrectangle(j * 100, i * 120, (j + 1) * 100, (i + 1) * 120); } } // setfillcolor(BLACK); for (int i = 0; i < 4; i++) //每一行需要填充的方块 { fillrectangle(map[i] * 100, i * 120, (map[i] + 1) * 100, (i + 1) * 120); //填充矩形 定位要填充的矩形的的左上角坐标和右下角坐标 } EndBatchDraw(); //结束批量绘图,把中间的内容统一绘制到界面 } int i; //x轴坐标 int j; //y轴坐标 int play()// 开始玩耍 用鼠标点击方块 { MOUSEMSG msg = GetMouseMsg();//鼠标消息初始化 switch (msg.uMsg) { case WM_LBUTTONDOWN: //如果鼠标消息按下左键 进入循环 i = msg.y / 120; //判断鼠标的位置相对于游戏区的位置 j = msg.x / 100; //判断鼠标的位置相对于游戏区的位置 if (map[3] == j && i == 3) //判断鼠标点击的位置是不是黑色方块 i==3 判断鼠标点击的位置是不是最下面一行,最下面一行为3 { for (int a = 3; a > 0; a--)//使用循环改变方块的值 { map[a] = map[a - 1]; } map[0] = rand() % 4;//最上面一排的方块重新赋值 n++; } else return 1; break; } return 0; } int main() { initgraph(4 * 100, 4 * 120);//初始化界面 srand((unsigned)time(NULL)); //随机数 init(); while (1) { draw(); if (play() == 1) { TCHAR str[100]; // wsprintf(str, _T("总共消除了%d个方块"), n); if (MessageBox(GetHWnd(), str, _T("游戏结束,是否在来一次"), MB_YESNO) == IDYES) //判断判断游戏是否需要继续 { init(); //重新初始化方块随机位置 draw(); //重新初始化画板 n = 0; continue; } else break; } }
closegraph();//关闭绘图界面 return 0; }
标签:绘图 判断 ems device 位置 std srand 保存 需要
原文地址:https://www.cnblogs.com/shenji/p/12493220.html