C++ 别踩白块小游戏练习

#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; }

 

posted @ 2020-03-14 17:40  神迹丶  阅读(661)  评论(0编辑  收藏  举报
网站已运行: