
#include"bios.h"
#define LEFT 75
#define RIGHT 77
#define UPPER 72
#define DOWN 80
#define ESC 27
struct Boxss/*定义箱子结构体,其中包含坐标属性*/
{
int x,y
}
union keyboard /*定义读取键盘码的共用体类型*/
{
unsigned int iKeyInfo
char chKeyBit[2]
}
int fnGetKey(void) /*定义读取键盘码的函数*/
{
union keyboard uniKey1 /*定义读取键盘码的共用体变量*/
while(bioskey(1)==0) /*检测用户是否按键*/
uniKey1.iKeyInfo=bioskey(0) /*读取按键信息*/
return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]) /*返回ASCII码或扩充码*/
}
void main()
{
int iKey,x=11,y=6,tx=11,ty=6 /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/
struct Boxss Box[4] /*定义箱子数量*/
int chMap[10][10]={ /*用二维数组定义地图*/
{0,0,0,0,0,0,0,0,0,0}, /*0表示墙1表示路2表示目标*/
{0,1,0,0,0,0,1,1,1,0},
{0,1,0,2,0,0,1,0,1,0},
{0,1,0,1,0,0,1,0,1,0},
{0,1,1,1,0,0,1,0,1,0},
{0,1,0,0,0,0,1,0,1,0},
{0,1,1,1,1,1,1,0,1,0},
{0,1,0,1,0,0,0,0,2,0},
{0,2,0,1,1,1,1,2,0,0},
{0,0,0,0,0,0,0,0,0,0},
}
int i,j
Box[0].x=13 /*定义箱子的坐标属性*/
Box[1].x=11
Box[2].x=14
Box[3].x=18
Box[0].y=8
Box[1].y=7
Box[2].y=13
Box[3].y=7
while(1) /*反复进行求移动的坐标运算*/
{
for(i=0i<10i++) /*输出新地图(刷新地图)*/
{
gotoxy(10,5+i)
for(j=0j<10j++)
{
if(chMap[i][j]==0)
printf("#")
if(chMap[i][j]==1)
printf(" ")
if(chMap[i][j]==2)
printf("X")
}
}
j=0 /*判断是否所有箱子都在目标坐标上*/
for(i=0i<4i++)
if(chMap[Box[i].y-5][Box[i].x-10]==2)
j++
if(j==4) /*如果所有箱子都就位输出"YOU WIN!"退出*/
{
clrscr()
printf("You Win!")
break
}
for(i=0i<4i++) /*在起始(或移动后)的坐标输出箱子*/
{
gotoxy(Box[i].x,Box[i].y)
printf("0")
}
gotoxy(x,y) /*在起始(或移动后)的坐标输出人*/
printf("*\b")
tx=x /*记录本次移动前的坐标*/
ty=y
iKey=fnGetKey()
if(iKey==LEFT&&chMap[y-5][x-1-10]!=0) /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/
x--
if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)
x++
if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)
y--
if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)
y++ /*输入ESC退出并输出"YOU LOST"*/
if(iKey==ESC)
{
clrscr()
printf("You Lost")
break
}
for(i=0i<4i++) /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/
if(Box[i].x==x&&Box[i].y==y)
{
Box[i].x+=(x-tx)
Box[i].y+=(y-ty)
if(chMap[Box[i].y-5][Box[i].x-10]==0) /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/
{
Box[i].x-=(x-tx)
Box[i].y-=(y-ty)
x=tx
y=ty
}
break
}
clrscr()
}
getch()
}
public class TestBox {public static void main(String[] args) {
// TODO Auto-generated method stub
Box box = new Box(2,2,2)
box.showVolume()
}
}
class Box{
private int height
private int width
private int length
public Box(int height, int width, int length){
this.height = height
this.width = width
this.length = length
}
public int showVolume(){
System.out.println(height* width*length)
return height* width*length
}
}
请采纳
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)