中文摘要

设计一款在以51单片机为核心的硬件系统中运行的推箱子游戏。游戏一共9关,功能包括:1、显示游戏开机界面和游戏界面;2、按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,通过小人推动箱子,把箱子推到指定的目的地为过关,箱子只能推不能拉;3、用于可以任意选关,并能随时退出、进入游戏;4、每一关都有时间计时,显示当前玩家的游戏耗时。

关键字:推箱子、51单片机

前言

推箱子是一个来自日本的经典游戏,目的是在训练逻辑思考能力。在一个规定区域中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。本设计利用C语言将推箱子游戏移植到51单片机的硬件系统,选择基于51单片机的推箱子游戏设计作为本次课设的题目。

系统的开发过程

第一节 硬件设计

根据设计目标,整个系统框图如下:


图一:总体设计框图

第一小节AT89C51简介

AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚,并集成了 Flash 程序存储器,既可在线编程(ISP),也可用传统方法进行编程,因此,低价位AT89C51单片机可应用于许多高性价比的场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。芯片AT89C51的引脚排列如图二所示:


图二:AT89C51单片机引脚图

第二小节晶振电路的设计

单片机晶振电路的设计如图三所示。XTAL1(X1)为反向振荡放大器的输入及内部时钟工作电路的输入。按照理论上AT89C51使用的是12MHz的晶振,但实测使用11.0592MHz。所以设计者通常用的是11.0592MHz。 


图三:单片机晶振电路

第三小节游戏显示电路的设计

选用内置T6963C控制控制器的12864图形点阵液晶(以下简称Lcd12864)做为显示模块。

T6963C控制器的最大特点具是有硬件初始值设置功能,显示驱动所需的参数,例如:占空比系数、每行驱动传输的字节数、字符的字体选择等均由引脚电平设置。所以,液晶显示模块在上电时T6963C控制器就进行初始化设置,软件操作的主要精力就可以全部用于显示界面的设计上。

LCD12864和单片机以模拟方式连接,即通过模拟操作时序的方法控制液晶显示。具体的接线图如图四所示: 


图四:显示电路设计图

第五小节按键电路的设计

本设计用到的按键不多,故最后选择使用7个轻触按键连接成2*4-1矩阵键盘,作为按键电路,如图五所示:


图五:按键设计电路图

第二节 界面设计

第一小节 Lcd12864显示驱动程序

      准备向Lcd12864进行操作时,首先要读取lcd12864的当前的状态,只有lcd12864不忙的时候才能读写操作和数据。相关函数如下:

/**************************************************

函数名:status_bit_01()

功能:状态位sta1(读/写指令),sta0(读/写数据)判断

入口参数:

返回值:状态值i                                                      

***************************************************/

/*********************************************

函数名:write_data(unsigned char dat)

功能:写数据

入口参数:8位数据dat

返回值:

*********************************************/

/*********************************************

函数名:write_cmd1(unsigned char cmd)

功能:写命令,无参数

入口参数:8位命令cmd

返回值:

*********************************************/

/*********************************************

函数名:write_cmd2(unsigned char cmd)

功能:写单参数命令

入口参数:8位数据dat,8位命令cmd

返回值:

*********************************************/

/************************************************

函数名:write_cmd3(unsigned char cmd)

功能:写双参数命令

入口参数:8位数据data1,8位数据data2,8位命令cmd

返回值:

*************************************************/

图六为Lcd12864的指令集,向Lcd12864写入相关的指令,即可控制其显示。


图六:Lcd12864的指令集

使用液晶前必须对其进行初始化操作,初始化的内容包括光标指针设置,图形区首地址,图形区宽度,显示方式设置,图形方式显示,标形状设置。相关函数如下:

/************************************************

函数名:init_12864()

功能:初始化lcd12864

入口参数:

返回值:

*************************************************/     

第二小节 按键扫描程序

初始P1的电平为0x0f,当有按键下时,电平发生变化,开始程序开始扫描判断哪个按键被按下,并返回按键号,相关函数如下:

/********************************

函数名:keys_scan()

功能:按键扫描

入口参数:

返回值:按键号keyno

*********************************/

第三小节游戏元素设计和显示

出现在显示画面中的游戏元素总共有6种:空白,人物,砖头(墙壁),箱子,目标,箱子到达目标。每个元素在液晶上以8个字符显示,即8×8的点阵。在字模提取软件设计各个元素,并获得元素的显示码。显示码的每8位构成字符的一行,8就行有8个字节。其中1表示该点显示,0表示该点不显示。图七-1至图七-6为各种游戏元素的图标:


定义一个二维数组unsignedchar code elements[][8],存储这些点阵信息。其中行号为元素代号。由于T6963c液晶是按以列1字符(8点),行1点来定位的,所以显示时,要先定位显示字符位的列字符和行字符首地址,即行*0x80+列;再定义一个循环变量i,从0,到7,定位该字符位的8个点行,即行*0x80+列+i*0x10,定位到每个点行后,写入对应的元素字节,即elements[元素代号][i],就可以在液晶的指定字符位置上显示该元素了。相关元素显示子函数如下:

/************************************************

函数名:printelement()

功能:指定字符位置,显示元素

入口参数:列字符地址xh,行字符地址yh,元素代码elnum

返回值:

*************************************************/

调用如下程序,对显示元素进行测试,图19为显示效果:

printelement(0,1,1);  //在第0列,第1行,显示1号元素(人物)

printelement(1,1,2);  //在第1列,第1行,显示2号元素(墙壁)

printelement(2,1,3);  //在第2列,第1行,显示3号元素(箱子)

printelement(3,1,4);  //在第3列,第1行,显示4号元素(目的地)

printelement(4,1,5);  //在第4列,第1行,显示5号元素(箱子在目的地上)

第四小节游戏关卡界面设计

游戏每关都是在8×8个字符组成的区域中进行的,只要在每一个字符显示相应的元素,就可以组成游戏界面。定义一个三维数组code level[][8][8],存储每一关每一个字符位上要显示的元素。下面图八-1至图八-9为游戏界面

 各关卡的界面如下:










第五小节开机界面

开机画面是用画图程序制作的一个128像素×64像素的单色位图,并用软件提取该图像的点阵信息,共1024字节。使用t6963c的写数据地址自动加1的命令写入上述全部1024字节的数据,显示开机画面如下,图像的点阵码在unsigned char code start_box[]中定义,其中宽度*高度=128*64。


第三节 游戏流程设计

游戏中,程序循环执行按键扫描程序,并做出相应判断。整个程序中,最关键的部分是要根据玩家的输入,控制小人、箱子的移动。

定义一个二维数组,用于保存当前游戏状态每个字符位的元素,当玩家按键输入时,改变该数组中相应得数据,再将此二维数组每个数据代码的元素显示出来,就可以出现人物,箱子移动的效果。

每关开始,进行游戏初始化。将关卡数据写入上述二维数组中,并记入小人的位置(man_x,man_y)。

程序只要根据人物移动方向周围的元素信息,结合游戏规则,只要判断能够移动箱子、小人的情况,才显示出来,而不用对不能移动的情况进行判定,这大大简化了程序的编写。游戏的流程框图如下(以向上移动为例,其他方向类似):



每进行一次移动后就进行是否过关的判定。将记录本关每个字符位状态的数组与存储本关原始信息的数组的对应数据进行比较,若发现目的地上没有箱子,则不算过关,程序退出,进入等待按键输入程序,若所有的目的地都有箱子,则游戏过关,初始化下一关游戏,显示下一关游戏界面。按相应的选关键,会改变记录游戏关卡的变量levelg,对游戏重新初始化,即可记录所选关卡。

第四节 计时设计

利用右半屏的8×8字节的空间,显示当前游戏计时和当前关卡。其中汉字占4个字符,数字占两个字符。显示方式与游戏元素的显示方式相同。显示效果如图所示,使用定时器0的计时功能,每到1秒,触发中断程序,计时变量Timtcount就加1,在对其进行数字分解,将各位在响应的位置上显示出来。

图十一 计时界面显示效果

系统测试情况

进入测试,游戏程序如下图所示,首先会显示开机界面,玩家可以按照按开始按钮即可开始游戏,游戏过程中可以进行计时,玩家可以上下左右移动控制人物的位置,也可以搬箱子移动指定目的地,当关卡完成自动进入下一关。当然,玩家也可以选择不同关卡进行游戏。最后,如果按退出按钮即可返回开机界面。


图十二 游戏程序界面

系统的优点与不足

优点:游戏容易上手,而且可以锻炼大脑思维

不足:有些关卡设计简单

参考文献

[1] 陈海宴. 51单片机原理及应用--基于Keil C与Proteus. 北京航空航天大学出版,2010-07-01,第1版.

[2] 彭伟. 单片机C语言程序设计实训100例——基于8051+PROTEUS仿真. 电子工业出版社,2009-06-01 .

[3] 浦滨. C游戏编程从入门到精通. 北京希望电子出版社,2002-5-1

[4] 李宏 张家田,等. 液晶显示器件应用技术  机械工业出版社, 2004-7-1

[5]AT89c52数据手册

附录代码

Variable.h
#define uchar unsigned char
#define uint unsigned int
//**********T6963c命令宏定义*********************//
//地址指针设置
#define cur_pos 0x21 //光标位置设置
#define CGR_pos 0x22 //CGRAM偏置地址设置
#define add_pos 0x24 //地址指针位置//显示区域设置
#define txt_stp 0x40 //文本区首地址
#define txt_wid 0x41 //文本区宽度
#define grh_stp 0x42 //图形区首地址
#define grh_wid 0x43 //图形区宽度//显示方式设置
#define mod_or  0x80 //显示方式:逻辑或
#define mod_xor 0x81 //显示方式:逻辑异或
#define mod_and 0x82 //显示方式:逻辑与
#define mod_tch 0x83 //显示方式:文本特征//显示状态设置
#define dis_sw 0x90 //显示开关//D0=1/0:光标闪烁启用/禁用//D1=1/0:光标显示启用/禁用//D2=1/0:文本显示启用/禁用//D3=1/0:图形显示启用/禁用//光标形状设置
#define cur_shp 0xa0 //光标形状选择:0xa0~0xa7光标占的行数:1行~8行//数据自动读写设置
#define aut_wr  0xb0 //自动写
#define aut_rd  0xb1 //自动读
#define aut_ovr 0xb2 //自动读写结束//数据一次读写设置
#define inc_wr 0xc0 //数据写,地址+1
#define inc_rd 0xc1 //数据读,地址+1
#define dec_wr 0xc2 //数据写,地址-1
#define dec_rd 0xc3 //数据读,地址-1
#define noc_wr 0xc4 //数据写,地址不变
#define noc_rd 0xc5 //数据读,地址不变uchar tcount;  			//中断计数
uint Timtcount;			//计时变量(秒)
uchar playing,startflag;//游戏标志,开始标志
uchar levelg; 			//记录当前关卡
uchar man_x,man_y;		//纪录当前小人所在位置
//**********lcd12864引脚位定义*********************//
sbit wr =P2^0;
sbit rd =P2^1; 
sbit cd =P2^2;
sbit rst=P2^3; uchar code Number[][16]= //数字0-9
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,	    //00x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,		//10x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,		//20x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,		//30x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,	    //40x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,		//50x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,		//60x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,		//70x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,		//80x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,		//9
};
//开机画面
uchar code start_box[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFC,0x7C,0xC0,0x06,0x30,0xC6,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x00,0x01,0x86,0xC7,0xF0,0x06,0x1F,0xC7,0xF8,0x30,0x00,0x01,0xC0,0x00,0x00,
0x00,0x00,0x01,0x87,0x86,0x18,0x0C,0x01,0x80,0x0C,0x30,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x01,0x87,0x82,0x18,0x1C,0x01,0x80,0x0E,0x30,0x00,0x00,0x40,0x00,0x00,
0x00,0x00,0x01,0x87,0x06,0x0C,0x18,0x01,0x00,0x06,0x30,0x00,0x00,0x40,0x00,0x00,
0x00,0x00,0x0F,0x87,0x07,0x0F,0x10,0x03,0x00,0x0C,0x30,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x0C,0x06,0x00,0x01,0x90,0x43,0x00,0x0C,0x1F,0xFF,0x01,0x80,0x00,0x00,
0x00,0x00,0x0C,0x06,0x00,0x01,0x98,0xC3,0x08,0x38,0x00,0x3E,0x03,0x00,0x00,0x00,
0x00,0x00,0x0C,0x0C,0x00,0x01,0x8F,0xC3,0x1C,0x38,0x00,0x3C,0x06,0x00,0x00,0x00,
0x00,0x00,0x0C,0x0C,0x00,0x03,0x1F,0xC7,0xFC,0x7C,0x7F,0xF6,0x0F,0xE0,0x00,0x00,
0x00,0x00,0x0F,0x88,0x1E,0x1F,0x1C,0x7F,0x67,0xDC,0xC0,0x03,0x18,0x30,0x00,0x00,
0x00,0x00,0x01,0x8C,0x00,0x03,0x18,0x01,0x80,0x0C,0xC0,0x01,0xF0,0x30,0x00,0x00,
0x00,0x00,0x03,0x87,0x80,0x03,0x10,0x00,0x80,0x0C,0xC0,0x00,0x00,0x30,0x00,0x00,
0x00,0x00,0x0E,0x01,0x80,0x03,0x10,0x00,0x9F,0x0C,0xC0,0x00,0x00,0x30,0x00,0x00,
0x00,0x00,0x0C,0x01,0x80,0x03,0x18,0x0F,0x80,0x0C,0xC0,0x00,0x00,0x30,0x00,0x00,
0x00,0x00,0x0C,0x01,0x9E,0x1F,0x0E,0x1B,0x80,0x0C,0xC0,0x00,0x00,0x30,0x00,0x00,
0x00,0x00,0x0C,0x03,0x00,0x03,0x0E,0x31,0x00,0x0C,0x7F,0xF0,0x7F,0xE0,0x00,0x00,
0x00,0x00,0x0C,0x06,0x00,0x03,0x1C,0x30,0x9F,0x0C,0x00,0x30,0x60,0x00,0x00,0x00,
0x00,0x00,0x07,0x86,0x00,0x03,0x38,0x30,0xC0,0x0C,0x00,0x30,0x60,0x00,0x00,0x00,
0x00,0x00,0x01,0x86,0x1E,0x1F,0x30,0x18,0xC0,0x0C,0x01,0xF0,0x60,0x00,0x00,0x00,
0x00,0x00,0x07,0x86,0x00,0x01,0xB0,0x0F,0x80,0x0C,0x03,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x0C,0x06,0x00,0x01,0x98,0x07,0x1F,0x0C,0x03,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x0C,0x06,0x00,0x01,0x8C,0x06,0x00,0x0C,0x03,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x0C,0x06,0x00,0x03,0x07,0x06,0x00,0x0C,0x03,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x0C,0x06,0x0F,0xFF,0x03,0x06,0x00,0x0C,0x03,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x0C,0x0F,0x18,0x00,0x03,0x07,0x00,0x18,0x03,0x00,0xC0,0x00,0x00,0x00,
0x00,0x00,0x07,0xF9,0xF0,0x00,0x01,0xFD,0xFF,0xF0,0x01,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFD,0xFE,0x18,0x7F,0x3F,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8D,0xB6,0x18,0x31,0xB6,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8C,0x30,0x1C,0x31,0x86,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x30,0x3C,0x31,0x86,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x3C,0x3F,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x30,0x36,0x36,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x3E,0x36,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0x66,0x33,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8C,0x30,0x63,0x33,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8C,0x30,0x63,0x31,0x86,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0x78,0xF7,0xF9,0xCF,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/*********************************************
游戏关卡 一共9关
数字符号表示:人物1 砖头2 箱子3 目的4 成功5
**********************************************/
uchar code level[][8][8]={/*第1关*/0,0,2,2,2,2,2,0,2,2,2,0,0,0,2,0,2,0,3,0,2,0,2,2,2,0,2,0,0,4,0,2,2,0,0,0,0,2,0,2,2,2,0,2,0,0,0,2,0,2,1,0,0,2,2,2,0,2,2,2,2,2,0,0,/*第2关*/2,2,2,2,2,2,2,2,2,0,0,0,0,0,1,2,2,0,0,0,5,0,0,2,2,0,0,2,2,2,2,2,2,2,0,0,2,0,0,0,2,0,3,0,2,0,0,0,2,0,0,4,2,0,0,0,2,2,2,2,2,0,0,0,/*第3关*/0,0,2,2,2,2,0,0,0,0,2,4,4,2,0,0,0,2,2,0,4,2,2,0,0,2,0,0,3,4,2,0,2,2,0,3,0,0,2,2,2,0,0,2,3,3,0,2,2,0,0,1,0,0,0,2,2,2,2,2,2,2,2,2,/*第4关*/0,0,0,2,2,2,2,0,0,2,2,2,0,1,2,0,0,2,0,0,3,0,2,0,2,2,0,2,0,2,2,2,2,0,0,2,0,2,4,2,2,0,2,0,0,3,4,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,/*第5关*/0,0,0,2,2,2,2,0,0,2,2,2,0,1,2,0,0,2,0,0,3,0,2,0,2,2,0,2,0,2,2,2,2,0,0,2,0,2,4,2,2,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,/*第6关*/0,0,0,2,2,2,2,0,0,2,2,2,0,1,2,0,0,2,0,0,3,0,2,0,2,2,0,2,0,2,2,2,2,0,0,2,0,2,4,2,2,0,2,0,0,3,4,2,2,0,3,0,0,0,4,2,2,2,2,2,2,2,2,2,/*第7关*/0,0,2,2,2,2,2,0,2,2,2,0,0,0,2,0,2,0,3,0,2,0,2,2,2,0,2,0,0,4,0,2,2,0,0,0,0,2,0,2,2,2,3,2,4,0,0,2,0,2,1,0,0,2,2,2,0,2,2,2,2,2,0,0, 	/*第8关*/0,2,2,2,2,0,0,0,2,2,0,0,2,0,0,0,2,1,3,0,2,0,0,0,2,2,3,0,2,2,0,0,2,2,0,3,0,2,0,0,2,4,3,0,0,2,0,0,2,4,4,5,4,2,0,0,2,2,2,2,2,2,0,0,/*第9关*/0,0,0,2,2,2,2,0,0,2,2,2,0,0,2,0,2,2,0,1,3,0,2,0,2,0,4,3,0,0,2,0,2,0,4,5,0,2,2,0,2,0,4,3,0,2,0,0,2,2,0,0,2,2,0,0,0,2,2,2,2,0,0,0,};
uchar level_temp[8][8]=				//记录当前的游戏界面的变化
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
uchar code elements[][8]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //0空白0x3C,0x7E,0x66,0x3C,0x7E,0x99,0x3C,0x66,  //1人物0x7F,0x7F,0x7F,0x00,0xEF,0xEF,0xEF,0x00,  //2砖头0xFF,0xC3,0xA5,0x99,0x99,0xA5,0xC3,0xFF,  //3箱子0x00,0x18,0x24,0x4A,0x52,0x24,0x18,0x00,  //4目标0xFF,0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF,  //5箱子到达目标	 	
};	
unsigned char code Di[]=	//"第"字														  //第
{0x20,0x40,0x3F,0x7E,0x48,0x90,0x85,0x08,0x3F,0xF8,0x01,0x08,0x01,0x08,0x3F,0xF8,0x21,0x00,0x21,0x00,0x3F,0xFC,0x03,0x04,0x05,0x04,0x19,0x28,0xE1,0x10,0x01,0x00,
};
unsigned char code Guan[]=	//“关”字													   //关
{0x10,0x10,0x08,0x10,0x08,0x20,0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x08,0x20,0x30,0x18,0xC0,0x06,
};unsigned char code Yong[]=	//“用”字														//用
{0x00,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x41,0x08,0x41,0x28,0x80,0x10,
}; unsigned char code Shi[]=	//“时”字															//时
{0x00,0x08,0x00,0x08,0x7C,0x08,0x44,0x08,0x45,0xFE,0x44,0x08,0x44,0x08,0x7C,0x08,0x44,0x88,0x44,0x48,0x44,0x48,0x44,0x08,0x7C,0x08,0x44,0x08,0x00,0x28,0x00,0x10,
};unsigned char code Miao[]=	//“秒”字														//秒
{0x08,0x20,0x1C,0x20,0xF0,0x20,0x10,0xA8,0x10,0xA4,0xFC,0xA2,0x11,0x22,0x31,0x20,0x3A,0x24,0x54,0x24,0x54,0x28,0x90,0x08,0x10,0x10,0x10,0x20,0x10,0xC0,0x00,0x00,
};main.c
#include<reg51.h>
#include"Variable.h"
/**************************************************
函数名:status_bit_01()
功能:状态位sta1(读/写指令),sta0(读/写数据)判断
入口参数:
返回值:状态值i	
***************************************************/ 
uchar status_bit_01()     
{uchar i;  	P0=0xff;cd=1;rd=0;for(i=10;i>0;i--){if((P1&0x03)==0x03)break;}rd=1;return i;                 
}/*********************************************
函数名:write_data(uchar dat)
功能:写数据
入口参数:8位数据dat
返回值:
*********************************************/
void write_data(uchar dat)
{while(status_bit_01()==0); rd=1;cd=0;wr=0;P0=dat;wr=1;cd=1;	  //一定要有这一句,补完后面的时序!
} 
/*********************************************
函数名:write_cmd1(uchar cmd)
功能:写命令,无参数
入口参数:8位命令cmd
返回值:
*********************************************/
void write_cmd1(uchar cmd)
{while(status_bit_01()==0);rd=1;cd=1;wr=0;P0=cmd;wr=1;cd=0;	 //一定要有这一句,补完后面的时序!
}/************************************************
函数名:write_cmd3(uchar cmd)
功能:写双参数命令
入口参数:8位数据data1,8位数据data2,8位命令cmd
返回值:
*************************************************/
void write_cmd3(uchar data1,uchar data2,uchar cmd)
{write_data(data1); 	write_data(data2); write_cmd1(cmd);
}/************************************************
函数名:setc_xy()
功能:定位
入口参数:列字符地址x,行位地址y
返回值:
*************************************************/
void setc_xy(uchar x, uchar y)
{int temp;temp = y * 0x10 + x;write_cmd3(temp&0xff,temp/0xff,add_pos);		
}
/*********************************************
函数名:write_cmd2(uchar cmd)
功能:写单参数命令
入口参数:8位数据dat,8位命令cmd
返回值:
*********************************************/
void write_cmd2(uchar dat,uchar cmd)
{write_data(dat);write_cmd1(cmd);
}/*********************************
功能:分解计时值的各位,并显示在响应的位置上
函数名:	time_change(unsigned int ttime)
入口参数:计时值
返回值:***********************************/void time_change(uint ttime)
{uchar a1,a2,a3,a4,a5;uchar i,j;a1=ttime/10000;	  a2=ttime/1000%10;a3=ttime/100%10;a4=ttime/10%10;a5=ttime%10;for(j=0;j<16;j++)	//a1{for(i=0;i<1;i++){setc_xy(9+i,32+j); write_cmd2(Number[a1][j],inc_wr);			 }}for(j=0;j<16;j++)	//a2{for(i=0;i<1;i++){setc_xy(10+i,32+j);write_cmd2(Number[a2][j],inc_wr);			 }}for(j=0;j<16;j++)	 //a3{for(i=0;i<1;i++){setc_xy(11+i,32+j);write_cmd2(Number[a3][j],inc_wr); }}for(j=0;j<16;j++)	//a4{for(i=0;i<1;i++){setc_xy(12+i,32+j);write_cmd2(Number[a4][j],inc_wr);			 }}for(j=0;j<16;j++)	 //a5{for(i=0;i<1;i++){setc_xy(13+i,32+j);write_cmd2(Number[a5][j],inc_wr);		}} 		
}
/*********************************
功能:初始化51
函数名:	int51_timec()
入口参数:
返回值:***********************************/
void int51_timec()
{EA=1;TMOD=0x11;ET0=1;TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;}
/*********************************
功能:定时器0中断
函数名:	t0_tt()
入口参数:
返回值:***********************************/
void t0_tt() interrupt 1
{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tcount++;if(tcount==20){tcount=0;Timtcount++;time_change(Timtcount);	}			
}
/************************************************
函数名:init_12864()
功能:初始化lcd12864
入口参数:
返回值:
*************************************************/	
void init_12864()
{wr=1;rd=1;cd=1;rst=1;//初始化write_cmd3(0x01,0x00,0x21);//光标指针设置write_cmd3(0x00,0x00,0x42);//图形区首地址write_cmd3(16,0x00,0x43);//图形区宽度 write_cmd1(0x88);//显示方式设置,正常显示write_cmd1(0x98);//图形方式显示,不显示字母,只打点write_cmd1(0xa0);//光标形状设置1 0 1 0 0 N2 N1 N0
}
/************************************************
函数名:start_ui()
功能:开机画面
入口参数:
返回值:
*************************************************/
void start_ui()
{uint i;setc_xy(0,0);for(i=0;i<1024;i++){write_cmd2(start_box[i],inc_wr);}
} 
/********************************
函数名:delayms(x)
功能:按键扫描延时
入口参数:x=延迟时间
返回值:
*********************************/
void delayms(uint x)
{uchar i;while(x--); for(i=0;i<100;i++);
}  /********************************
函数名:keys_scan()
功能:按键扫描
入口参数:
返回值:按键号keyno 
*********************************/
uchar  keys_scan()	   
{	uchar tmp; //高4位置1,放入4行uchar keyno=16;if(P1 != 0x0f){P1 = 0x0f; 	delayms(1); //按键后00001111将编程0000××××,×中有一个为0.其余为1//下面的异或操作会把3个1变成0,唯一的0变成1tmp = P1 ^ 0x0f;//判断按键发生于0-3列中哪一列switch(tmp){case 1: keyno = 0;break;case 2: keyno = 1;break;case 4: keyno = 2;break;case 8: keyno = 3;break;default:keyno = 16;//无键按下	}	//低4位置0,放入4列P1 = 0xf0;delayms(1);//按键后11110000将变成××××0000,×中有1个为0,3个仍为1tmp = (P1 >> 4)^ 0x0f;//对0-3行分别附加起始值0,4,8,12switch(tmp){case 1:keyno += 0;break;case 2:keyno += 4;break;case 4:keyno += 8;break;case 8:keyno += 12;break;	}P1=0x0f;	return keyno;}	return keyno; 	
}
/************************************************
函数名:clc()
功能:清屏
入口参数:
返回值:
*************************************************/
void clc()
{			  int i;write_cmd3(0,0,add_pos);for(i = 0; i < 1024; i++)write_cmd2(0x00,inc_wr);
}
/************************************************
函数名:printelement()
功能:指定字符位置,显示元素
入口参数:列字符地址xh,行字符地址yh,元素代码elnum
返回值:
*************************************************/
void printelement(uchar xh, uchar yh,uchar elnum)	 
{uchar i;int temp; 	for(i=0;i<8;i++)  //行地址加+1{temp = yh* 0x80+i*0x10 + xh;write_cmd3(temp&0xff,temp/0xff,add_pos);write_cmd2(elements[elnum][i],noc_wr); } 	
}
void display_time()
{unsigned i,j;	for(j=0;j<16;j++)//显示“第”字{for(i=0;i<2;i++){setc_xy(9+i,j);write_cmd2(Di[j*2+i],inc_wr);//数组的地址不要乱!}}for(j=0;j<16;j++)//关数{for(i=0;i<1;i++){setc_xy(11+i,j);write_cmd2(Number[levelg+1][j],inc_wr);	//数组的地址不要乱!}}for(j=0;j<16;j++){for(i=0;i<2;i++){setc_xy(12+i,j);write_cmd2(Guan[j*2+i],inc_wr);//“关”字	 }}for(j=0;j<16;j++){for(i=0;i<2;i++)												//列式按字符寻址的,行是按位寻址的{setc_xy(9+i,16+j);write_cmd2(Yong[j*2+i],inc_wr);		//“用”字	 }}for(j=0;j<16;j++){for(i=0;i<2;i++){setc_xy(12+i,16+j);write_cmd2(Shi[j*2+i],inc_wr);		//“时”字	 }}for(j=0;j<16;j++){for(i=0;i<2;i++){				 setc_xy(14+i,32+j);write_cmd2(Miao[j*2+i],inc_wr);		//“秒”字	 }}  
}/************************************************
函数名:gamebg()
功能:显示游戏本关卡游戏界面
入口参数:关卡代号g
返回值:
*************************************************/
void gamebg(uchar g)
{unsigned i,j;for(i=0;i<8;i++)                                      //行{for(j=0;j<8;j++)                                  //列{if(level[g][i][j]==1) {man_x=j;man_y=i;}level_temp[i][j]=level[g][i][j];              //当前关卡存入游戏缓冲printelement(j,i,level_temp[i][j]);          //显示当前关卡	}}display_time();time_change(Timtcount);	}
/************************************************
函数名:level_suc()
功能:判断是否通过本关卡
入口参数:
返回值:
*************************************************/
void level_suc()
{uchar i,j,k=1;for(i = 0; i < 8; i++)	                                    //行{if(k==0) break;for(j = 0; j < 8; j++)									//列{	                                                     if(level[levelg][i][j]==4||level[levelg][i][j]==5)	//循环扫描目标位置都有箱子在,此关卡就通过{if(level_temp[i][j]==5)k=1;										//此位置箱子在目标位置上else{k=0;										//有目标位置没有箱子break;}}}}if(k==1)													 //所有目标位置都有箱子{if(levelg<8)levelg+=1;else levelg=0;			 //通关后重新从第一关开始Timtcount=0;			 //计时清零TH0=(65536-50000)/256;TL0=(65536-50000)%256;tcount=0;gamebg(levelg);			}
}/************************************************
函数名:key_up()
功能:按向上键的操作
入口参数:
返回值:
注释含义:?=:是否等与上:本位置的上一个位置目: 箱子的目标位置成:箱子在目标位置上源:位置最开始的元素本:本位置空:空白位置再上:本位置的再上一个位置箱:箱子
*************************************************/
void key_up()
{if(level_temp[man_y-1][man_x]==0||level_temp[man_y-1][man_x]==4)	             //上?=目/成   {		 if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)           //本,源?=目/成{level_temp[man_y][man_x]=4;										         //本=目printelement(man_x,man_y,4);	   }else{level_temp[man_y][man_x]=0;										         //本=空printelement(man_x,man_y,0);}man_y=man_y-1;													             //上=人//完成一次移动level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);} else if(level_temp[man_y-1][man_x]==3)								             //上?=箱{				  if(level_temp[man_y-2][man_x]==0)									         //再上?=空白{if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)	     //本,源?=目/成{level_temp[man_y][man_x]=4;										     //本=目printelement(man_x,man_y,4);}else																	 //本=空{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_y=man_y-1;														     //上=人level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y-1][man_x]=3;										     //再上=箱//完成一次移动printelement(man_x,man_y-1,3);}else if(level_temp[man_y-2][man_x]==4)									     //再上?=目{if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)		 //本,源?=目/成{level_temp[man_y][man_x]=4;											 //本=目printelement(man_x,man_y,4);}else																	 //本=空{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_y=man_y-1;					   level_temp[man_y][man_x]=1;												 //上=人printelement(man_x,man_y,1);level_temp[man_y-1][man_x]=5;											 //再上=成printelement(man_x,man_y-1,5); 			} }else if(level_temp[man_y-1][man_x]==5)	                                          //上?=成{		   if(level_temp[man_y-2][man_x]==0)											  //再上?=空{if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)		  //本,源?=目/成{level_temp[man_y][man_x]=4;											  //本=目printelement(man_x,man_y,4);}else{																		  //本=空level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_y=man_y-1;															  //上=人level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y-1][man_x]=3;										      //再上=箱printelement(man_x,man_y-1,3);}else if(level_temp[man_y-2][man_x]==4)										  //再上?=目{if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)		  //本,源?=目/成{level_temp[man_y][man_x]=4;											  //本=目printelement(man_x,man_y,4);}else																	  //本=空{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_y=man_y-1;															  //上=人level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y-1][man_x]=5;											  //再上=成printelement(man_x,man_y-1,5);	 		    }  			}level_suc();                                                                    //判断是否完成本关				 
}/************************************************
函数名:key_down()
功能:按向下键的操作
入口参数:
返回值:
*************************************************/
void key_down()
{if(level_temp[man_y+1][man_x]==0||level_temp[man_y+1][man_x]==4)				   {if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)			   {level_temp[man_y][man_x]=4;												   printelement(man_x,man_y,4);}else{																			   level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);} 																			   man_y=man_y+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);}else if(level_temp[man_y+1][man_x]==3)											   {if(level_temp[man_y+2][man_x]==0)											  {if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5)		   {level_temp[man_y][man_x]=4;											   printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;											  printelement(man_x,man_y,0);} man_y=man_y+1;															   level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y+1][man_x]=3;											   printelement(man_x,man_y+1,3);}else if(level_temp[man_y+2][man_x]==4)											{if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_y=man_y+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y+1][man_x]=5;printelement(man_x,man_y+1,5);			}}else if(level_temp[man_y+1][man_x]==5){if(level_temp[man_y+2][man_x]==0){if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_y=man_y+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y+1][man_x]=3;printelement(man_x,man_y+1,3);}else if(level_temp[man_y+2][man_x]==4){if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}					      man_y=man_y+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y+1][man_x]=5;printelement(man_x,man_y+1,5); 						  } 				  }				  				  level_suc();
}
/************************************************
函数名:key_left()
功能:按向左键的操作
入口参数:
返回值:
*************************************************/
void key_left()
{if(level_temp[man_y][man_x-1]==0||level_temp[man_y][man_x-1]==4){if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_x=man_x-1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);}else if(level_temp[man_y][man_x-1]==3){if(level_temp[man_y][man_x-2]==0){if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);} man_x=man_x-1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x-1]=3;printelement(man_x-1,man_y,3);} else if(level_temp[man_y][man_x-2]==4){ if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_x=man_x-1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x-1]=5;printelement(man_x-1,man_y,5);}}  else if(level_temp[man_y][man_x-1]==5){if(level_temp[man_y][man_x-2]==0){	if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_x=man_x-1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x-1]=3;printelement(man_x-1,man_y,3); 						      }else if(level_temp[man_y][man_x-2]==4){	  if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}	  					      man_x=man_x-1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x-1]=5;printelement(man_x-1,man_y,5);}						 }			level_suc();			
}
/************************************************
函数名:key_right()
功能:按向右键的操作
入口参数:
返回值:
*************************************************/
void key_right()
{if(level_temp[man_y][man_x+1]==0||level_temp[man_y][man_x+1]==4){if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_x=man_x+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);}	else if(level_temp[man_y][man_x+1]==3){	 if(level_temp[man_y][man_x+2]==0){	  if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}man_x=man_x+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x+1]=3;printelement(man_x+1,man_y,3);}else if(level_temp[man_y][man_x+2]==4){	  if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}	man_x=man_x+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x+1]=5;printelement(man_x+1,man_y,5);						  }	}	 else if(level_temp[man_y][man_x+1]==5){	  if(level_temp[man_y][man_x+2]==0){if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}	man_x=man_x+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x+1]=3;printelement(man_x+1,man_y,3); 						      }else if(level_temp[man_y][man_x+2]==4){	  if(level[levelg][man_y][man_x]==4||level[levelg][man_y][man_x]==5){level_temp[man_y][man_x]=4;printelement(man_x,man_y,4);}else{level_temp[man_y][man_x]=0;printelement(man_x,man_y,0);}					      man_x=man_x+1;level_temp[man_y][man_x]=1;printelement(man_x,man_y,1);level_temp[man_y][man_x+1]=5;printelement(man_x+1,man_y,5); 						  }						 }					 level_suc();	
}
/************************************************
函数名:void put_box()
功能:推箱子游戏规则
入口参数:
返回值:
*************************************************/
void put_box()
{uint keyupdate;keyupdate=16;	if(P1!=0x0f)//若没有这句,有可能在按键扫描后执行while(P1!=0x0f),就得不到按键值,使按键失效{keyupdate=keys_scan();while(P1!=0x0f);	  }		switch(keyupdate){case 0:  key_up();break;				                                 case 1:key_down();break;	case 2:key_left();break;case 3:key_right();break;		case 4:playing=0;startflag=1;Timtcount=0;TR0=0;clc();					start_ui();			break;	//退出游戏case 5:if(levelg!=8)levelg++;gamebg(levelg);		  //显示第一关Timtcount=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;tcount=0;break;				  //下一关case 6:if(levelg!=0)levelg--; 				gamebg(levelg);		  //显示第一关Timtcount=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;tcount=0;break;                     //上一关}
}void main()
{uchar kupdate;uchar startflag; int51_timec();               //初始化51init_12864();               //初始化12864startflag=1;playing=0;start_ui();while(1){while(startflag)			 //等待确定键按下{kupdate=16;	if(P1!=0x0f)				//若没有这句,有可能在按键扫描后执行while(P1!=0x0f),就得不到按键值,使按键失效{kupdate=keys_scan();while(P1!=0x0f);	  }switch(kupdate){case 4:startflag=0;playing=1;break;} }clc();//清屏 levelg=0; 		gamebg(levelg);		  //显示第一关 Timtcount=0;TR0=1;while(playing)		  //游戏中...{put_box();	 }startflag=1;}			
}







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

相关文章

  1. PHP+MySQL实现新闻管理系统

    PHP+MySQL实现增删改查 这里用PHP和MySQL实现了一个新闻管理系统的增删改查的功能。 一、数据库 首先创建数据库二、创建项目 1、我是在eclipse里面创建的PHP Project项目,项目目录如下:这里需要在eclipse里面下载php插件才能创建PHP Project项目,下载插件就是的流程是:运行…...

    2024/5/6 23:08:54
  2. 学生信息管理系统--毕业论文

    摘 要计算机飞速发展的今天,计算机的应用已在社会的各个领域深入开来,无论是在商业,工业还是政府部门都早已普及,如今就连教育行业也把计算机应用到各个方面的工作中,本次毕业设计就是把计算机应用到学校学生信息管理中的范例。本设计采用Microsoft SQL Server 2005作为…...

    2024/4/19 16:40:17
  3. 手很节克战分百队装效布作度QzYiMH

    道这嘴脸我怎么,看得那!么眼熟呢,我笑道那!当,然!在,中国区的?NPC,都是中国游戏策划设计的!当,然要那!什么了,嘿嘿!心照不宣了,秦韵抿嘴一笑呵呵 巨斧迎面而,至!我甚至能,看到!巨斧后,面那!狂战士得意的,笑容?嘿嘿,我也!笑了,烈焰枪猛然光芒暴涨!一团金色光晕在,枪尖之上跳跃…...

    2024/4/16 23:30:06
  4. EASYNEWS新闻管理系统 v1.01 正式版

    实例一:“一句话木马”入侵“EASYNEWS新闻管理系统” “EASYNEWS新闻管理系统 v1.01 正式版”是在企业网站中非常常见的一套整站模版,在该网站系统的留言本组件中就存在着数据过滤不严漏洞,如果网站是默认路径和默认文件名安装的话,入侵者可以利用该漏洞直接上传ASP木马程序…...

    2024/4/16 23:30:42
  5. 新闻管理系统(一)管理员登陆实现

    今天比较空闲,整理一下这星期学的东西,主要是利用Dao模式对数据库进行增删改查的一个新闻管理系统,分为前台和后台,目前是先写了后台的页面,主要运用了JSP里面的几大内置对象,相信,对初学者应该有一定的借鉴作用,好了,下面来开始说明该系统第一部分的实现和效果吧, …...

    2024/4/16 23:31:12
  6. 研发质量管理工作经验总结(一)----质量管理知识

    研发质量管理工作经验总结(一)----质量管理知识目录 第一章 质量管理知识•质量管理体系•技能知识•业务知识第二章 质量管理技能•过程改进•质量策划•过程跟踪和控制•度量及数据分析•问题风险识别与管控•成本控制与效率提升 第三章 心得体会本人毕业后干了两年的开…...

    2024/4/16 23:31:12
  7. C#游戏编程:《控制台小游戏系列》之《六、贪吃蛇实例》

    一、游戏分析 1976年,Gremlin平台推出一款经典街机游戏Blockade,则为贪吃蛇的原型,这款简单的小游戏很受欢迎,给80后这代人带来不可磨灭的记忆。作为未来程序员的我们,玩自己设计出的贪吃蛇比玩现有的更加有趣,我们可以添加我们所想到的各种特征,即使游戏多么另类都不觉…...

    2024/5/6 19:15:24
  8. java 实现 RSA 公钥私钥分别 加密解密 加签延签 生成 公钥私钥 实例

    目录介绍秘文写入本地文件 和读出使用解密公钥加密,私钥解密示例日志公钥私钥分别 加密解密 加签延签 测试类加密类验证添加签名类base64类结果生成公钥私钥日志介绍一共四个类秘文写入本地文件 和读出使用解密package com.superman.service;import java.io.BufferedReader; i…...

    2024/4/10 8:38:26
  9. JAVA小项目--银行管理系统(GUI+数据库mysql)

    主要是图形界面的编写和数据库工具类DBUtil的编写。代码需要可以私我,我会上传到资源里。1.思路2.菜单3.登录4.查询5.存钱6.改密7.取钱8.挂失9.开户10.转账...

    2024/4/18 19:58:01
  10. PHP新闻管理系统(包括前台后台)

    一、 题目基于PHP的新闻发布系统二、 需求分析1、 软件功能新闻发布系统(News Release System or Content Management System)又叫做内容管理系统CMS(Content Management System),是一个基于网络的新闻发布和管理的管理系统,它是基于B/S模式的系统,本系统可以几乎完成新闻发…...

    2024/4/16 23:31:56
  11. SQL Server如何备份数据库?完整数据库备份方式

    完整数据库的备份与恢复 完整数据库的备份:在对象资源管理器栏中选中所需要备份的数据库后右击—>任务—>备份进入到设置界面后备份类型选择完整,添加按钮可选择备份文件的存储位置,在这里我按照MSSQL默认的目录,点击确定即:C:\Program Files\Microsoft SQL Server\…...

    2024/4/16 23:32:02
  12. 上传图片 jspsmart,src写入数据库中

    上传图片 <html> <head> <title></title> </head> <body> <form METHOD="POST" ACTION="advertiser/banner_save.jsp" NAME="form1" ENCTYPE="multipart/form-data" onSubm…...

    2024/4/16 23:31:44
  13. MYSQL 数据库备份、表备份、备份数据库时剔除不需要的库

    指定单个数据库进行备份如下:对单个acc1数据库进行备份:root@ubuntu107:~# mysqldump -uroot -p acc1 --default-character-set=utf8 --opt -Q -R --skip-lock-tables > acc1.sql指定多个数据库进行备份如下:对acc1和fafa数据库同时进行备份root@ubuntu107:~# mysqldump …...

    2024/4/19 10:22:31
  14. Java开发新闻管理系统(前后端) 爬虫百度、新浪等新闻

    ForFuture News 新闻管理系统项目演示地址:http://www.ganquanzhong.top[注]:文档下载: Reward、SCDN、Forture Share1. 系统功能介绍:1.1前言当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出。简单…...

    2024/4/16 23:33:08
  15. 新闻管理系统(Servlet)

    2018-08-16 08:03:59 新闻管理系统此系统有三个角色:超级管理员、普通管理员、普通用户 1:登录...

    2024/4/23 7:45:25
  16. [知识竞赛现场管理系统-PPT双屏版]隆重推出,PowerPoint技术深度应用,国内唯一。只要会制作普通的PPT,就可打造一场专业的知识竞赛。

    【关 键 词】知识竞赛,公开竞聘,课堂知识竞赛,安全知识竞赛,安全消防保卫知识竞赛,安全生产知识竞赛,防火安全知识竞赛,电力安全知识竞赛,百科知识竞赛,中学百科知识竞赛,档案知识竞赛,税收征管法知识竞赛,税法知识竞赛,税务法制业务知识竞赛,金融知识竞赛,保险知识竞赛,银行柜…...

    2024/4/16 23:30:42
  17. sql2005 数据库还原,备份集中的数据库备份与现有的数据库不同,解决办法

    在“选项”中选择“覆盖现有数据库”,否则就会出现“备份集中的数据库备份与现有的数据库”的问题。...

    2024/4/16 23:32:08
  18. 在游戏开发中的使用icade手柄

    apple store上的MFI游戏手柄动不动就要四五百元,但网上买的icade游戏手柄一个只要20几元。使用icade玩游戏的话如果不需要在游戏中打字游戏玩起来效果其实也不错。网上卖的icade手柄很小巧,如下图: 这种游戏手柄除了可以作为游戏手柄使用外,也可以当作手机自拍遥控,音量遥…...

    2024/4/16 23:30:42
  19. 简单新闻管理系统(jsp)

    简单新闻管理系统(jsp)一、构思主页中有添加,删除,修改新闻功能,跟数据库连接,分别跳转处理Navicat for mysql: 列表如图所示: 二、开始编写新闻主页:index.jsp<%@ page contentType="text/html;charset=UTF-8" language="java"pageEncoding=&qu…...

    2024/4/18 18:17:15
  20. 泡泡堂游戏开发 (SYSU Project)

    泡泡堂游戏开发 (SYSU Project) 源码链接 –> 泡泡堂游戏GitHub地址,记得随手给个star~ 再推荐一个基于深度学习的验证码识别项目 –> 验证码识别GitHub地址,star~ 概述 在本次python的项目中,我们小组顺利的完成了游戏泡泡堂的基本功能,总代码量接近5k行,并在游戏泡…...

    2024/4/16 23:32:02

最新文章

  1. C#面:请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点

    在.NET中&#xff0c;常用的几种页面间传递参数的方法包括&#xff1a; 查询字符串&#xff08;Query String&#xff09;&#xff1a;通过在URL中添加参数来传递数据。例如&#xff1a;http://example.com/page.aspx?id123 优点是简单易用&#xff0c;缺点是参数暴露在URL中…...

    2024/5/7 6:30:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/6 9:38:23
  3. 使用阿里云试用Elasticsearch学习:3.5 处理人类语言——停用词: 性能与精度

    从早期的信息检索到如今&#xff0c; 我们已习惯于磁盘空间和内存被限制为很小一部分&#xff0c;所以 必须使你的索引尽可能小。 每个字节都意味着巨大的性能提升。 (查看 将单词还原为词根 ) 词干提取的重要性不仅是因为它让搜索的内容更广泛、让检索的能力更深入&#xff0c…...

    2024/5/4 1:29:52
  4. 汽车疲劳测试试验平台技术要求(北重厂家)

    汽车疲劳测试试验平台技术要求通常包括以下几个方面&#xff1a; 车辆加载能力&#xff1a;测试平台需要具备足够的承载能力&#xff0c;能够同时测试多种车型和不同重量的车辆。 动力系统&#xff1a;测试平台需要具备稳定可靠的动力系统&#xff0c;能够提供足够的力和速度来…...

    2024/5/3 8:56:17
  5. 用html实现在页面底部养鱼的效果

    <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>在网页底部养鱼</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"fi…...

    2024/5/7 1:08:12
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/6 9:21:00
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57