2008年7月2日7月26日长沙热情科技软件公司进行二十天社会实践日子生中次难忘历二十天里接解社会懂工作间乐趣际交复杂期间C语言独立开发款推箱子游戏事评面做汇报:
C语言程序设计推箱子游戏
#includestdioh
#includebiosh
#define LEFT 75
#define RIGHT 77
#define UPPER 72
#define DOWN 80
#define ESC 27
struct Boxss *定义箱子结构体中包含坐标属性*
{
int xy
}
union keyboard *定义读取键盘码体类型*
{
unsigned int iKeyInfo
char chKeyBit[2]
}
int fnGetKey(void) *定义读取键盘码函数*
{
union keyboard uniKey1 *定义读取键盘码体变量*
while(bioskey(1)0) *检测户否键*
uniKey1iKeyInfobioskey(0) *读取键信息*
return(uniKey1chKeyBit[0]0uniKey1chKeyBit[1]uniKey1chKeyBit[0]) *返回ASCII码扩充码*
}
void main()
{
int iKeyx11y6tx11ty6 *xy物移动坐标txty物移动前坐标*
struct Boxss Box[4] *定义箱子数量*
int chMap[10][10]{ *二维数组定义图*
{0000000000} *0表示墙1表示路2表示目标*
{0100001110}
{0102001010}
{0101001010}
{0111001010}
{0100001010}
{0111111010}
{0101000020}
{0201111200}
{0000000000}
}
int ij
Box[0]x13 *定义箱子坐标属性*
Box[1]x11
Box[2]x14
Box[3]x18
Box[0]y8
Box[1]y7
Box[2]y13
Box[3]y7
while(1) *反复进行求移动坐标运算*
{
for(i0i<10i++) *输出新图(刷新图)*
{
gotoxy(105+i)
for(j0j<10j++)
{
if(chMap[i][j]0)
printf(#)
if(chMap[i][j]1)
printf( )
if(chMap[i][j]2)
printf(X)
}
}
j0 *判断否箱子目标坐标*
for(i0i<4i++)
if(chMap[Box[i]y5][Box[i]x10]2)
j++
if(j4) *果箱子位输出YOU WIN退出*
{
clrscr()
printf(You Win)
break
}
for(i0i<4i++) *起始(移动)坐标输出箱子*
{
gotoxy(Box[i]xBox[i]y)
printf(0)
}
gotoxy(xy) *起始(移动)坐标输出*
printf(*\b)
txx *记录次移动前坐标*
tyy
iKeyfnGetKey()
if(iKeyLEFT&&chMap[y5][x110]0) *读取键信息改变坐标果改变坐标墙(0)重合改变*
x
if(iKeyRIGHT&&chMap[y5][x+110]0)
x++
if(iKeyUPPER&&chMap[y15][x10]0)
y
if(iKeyDOWN&&chMap[y+15][x10]0)
y++ *输入ESC退出输出YOU LOST*
if(iKeyESC)
{
clrscr()
printf(You Lost)
break
}
for(i0i<4i++) *果移动坐标箱子坐标重合改变箱子坐标前格*
if(Box[i]xx&&Box[i]yy)
{
Box[i]x+(xtx)
Box[i]y+(yty)
if(chMap[Box[i]y5][Box[i]x10]0) *果移动箱子坐标会出现墙箱子坐标坐标返回移动前值*
{
Box[i]x(xtx)
Box[i]y(yty)
xtx
yty
}
break
}
clrscr()
}
getch()
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档