引擎碰撞的一个极好例子,推箱子游戏
import java.util.*;
public class t{
public static void main(String args[]){
//准备空间
int zxyr=0;
int zx=0;
int zy=0;
String ip;
Random ran=new Random();
Scanner a=new Scanner(System.in);
String[] b=new String[]{" ","□","●","墙","人"};
String[] c=new String[]{"→","↑","←","↓"};
System.out.println("欢迎使用\n\n★★★★★★★★★★★★“推箱子”★★★★★★★★★★★★\n\n系统初始化完成!\n走起〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n所有命令:\t右:\t"+c[0]+"\t上:\t"+c[1]+"\t左:\t"+c[2]+"\t下:\t"+c[3]+"\t\t\n使用方法输入键后回车:\n");
int[][] d=new int[8][8];
String[][] p=new String[8][8];
int Stop=0;
int winflag=0;
//随机布局
Stop++;
if(Stop>10000){
Stop=0;
}
for(int i=0;i<3;i++){
d[ran.nextInt(8)][ran.nextInt(8)]=1;
d[ran.nextInt(8)][ran.nextInt(8)]=2;
d[ran.nextInt(8)][ran.nextInt(8)]=3;
}
for(int x=0;Stop>-1;x++){
//显示图形
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
if(i!=zx||j!=zy){
p[i][j]=b[(d[i][j])];
System.out.print(p[i][j]);
}else{
System.out.print("人");
}
}
System.out.println();
}
//主过程
zxyr=d[zx][zy];
int zyr=zy;
int zxr=zx;
int backupmark=0;
int xxy;
//已备份人位置
if (winflag==1){
break;
}
for(int i=0;i<8;i++){
System.out.println("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");
}
ip=a.next();
if(ip.equals("a")||ip.equals("A")){
if(zy!=0&&d[zx][zy-1]!=3){
zy--;
backupmark=1;
}
}else if(ip.equals("s")||ip.equals("S")){
if(zx!=7&&d[zx+1][zy]!=3){
zx++;
backupmark=2;
}
}else if("d".equals(ip)||ip.equals("D")){
if(zy!=7&&d[zx][zy+1]!=3){
zy++;
backupmark=3;
}
}else if("w".equals(ip)||ip.equals("W")){
if(zx!=0&&d[zx-1][zy]!=3){
zx--;
backupmark=4;
}
}else{
backupmark=0;
}
//检测与还原
if(zx<8&&zy<8&&zy>=0&&zx>=0){
//
if(d[zx][zy]==0){
d[zxr][zyr]=d[zx][zy];
d[zx][zy]=zxyr;
}else if(d[zx][zy]==1){
int cx=zx-zxr;
int cy=zy-zyr;
if((zx+cx)>0&&(zx+cx)<7&&(zy+cy)<7&&(zy+cy)>0){
xxy=d[zx+cx][zy+cy];
if(xxy==0&&d[zx][zy]==1){
d[zx+cx][zy+cy]=d[zx][zy];
d[zx][zy]=d[zxr][zyr];
d[zxr][zyr]=xxy;
System.out.println("oh,year"+d[zx+cx][zy+cy]+" "+d[zx][zy]+" "+d[zxr][zyr]+" "+xxy);
}else{
switch(backupmark){
case 1:
zy++;
break;
case 2:
zx--;
break;
case 3:
zy--;
break;
case 4:
zx++;
break;
}
}
if(xxy==2){
winflag=1;
System.out.println("★★★★★★★★★★★★★★★★★★★★★★\n\n★★★★★★★★★★★★★★★★★★★★★★\n\n★★★★★★★ 【 你赢了 】 ★★★★★★★★\n\n\n\n");
d[zx][zy]=0;
d[zx+cx][zy+cy]=0;
}
}else{
switch(backupmark){
case 1:
zy++;
break;
case 2:
zx--;
break;
case 3:
zy--;
break;
case 4:
zx++;
break;
}
}
}else{
switch(backupmark){
case 1:
zy++;
break;
case 2:
zx--;
break;
case 3:
zy--;
break;
case 4:
zx++;
break;
}
}
}
for(int i=0;i<8;i++){
System.out.println("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");
}
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)