本篇博客主要是推箱子游戏界面功能的代码讲解。
首先先给出这段代码的部分运行截图

重难点:

游戏界面主要有五个重难点
固定好地图的位置
地图的显示
构建菜单栏
读取地图数据
玩家操作功能实现

地图的位置

首先是地图位置的确定,地图通过label的二维数组(大小为20*20)来显示,确定好位置后,只需要改变每个label上显示的图片,就可以显示不同的地图。label就像显示屏,根据需要显示不同内容。

JLabel[][] jl=new JLabel[20][20];//20*20的label,用于显示地图
for(int i=0;i<20;i++) {//实例化label数组,并设置各label的大小和位置for(int j=0;j<20;j++) {jl[i][j]=new JLabel();this.add(jl[i][j]);jl[i][j].setBounds(i*30, j*30+40, 30, 30);}}

地图的显示

其次是地图的显示,固定好每个label的位置后,根据地图数据显示相对应的图片,而地图数据由mymap二维数组存放。每次移动只需改变二维数组的数据,再通过方法将新的地图内容显示。

public void paint() {ImageIcon[] icon = new ImageIcon[7];//icon数组//各种图片路径设置,根据实际自行修改icon[0] = new ImageIcon(); icon[1] = new ImageIcon("shiyan4_image/wall.png"); //墙icon[2] = new ImageIcon(); icon[3] = new ImageIcon("shiyan4_image/box1.png"); //箱子icon[4] = new ImageIcon("shiyan4_image/destination.png"); //目的地icon[5] = new ImageIcon("shiyan4_image/player.png");  //玩家icon[6] = new ImageIcon("shiyan4_image/box2.png"); //到达目的地的箱子//显示地图内容for(int i=0;i<20;i++) {for(int j=0;j<20;j++) {         jl[i][j].setIcon(icon[mymap[i][j]]);}}}

菜单栏

添加菜单栏来是实现对游戏各种功能的控制,可以执行上一关,下一关,重新开始本关,返回首页等操作

public void MENU() {//菜单栏位置和大小menuBar.setBounds(0, 0, 900, 20);//菜单栏内容JMenu menu_1 = new JMenu("菜单");JMenu menu_2 = new JMenu("更多");//菜单条目JMenuItem menuItem_1 = new JMenuItem("下一关");JMenuItem menuItem_5 = new JMenuItem("上一关");JMenuItem menuItem_2 = new JMenuItem("重新开始");JMenuItem menuItem_3 = new JMenuItem("返回首页");JMenuItem menuItem_4 = new JMenuItem("关于我们");//添加控件menuBar.add(menu_1);menuBar.add(menu_2);menu_1.add(menuItem_1);menu_1.add(menuItem_5);menu_1.add(menuItem_2);menu_1.add(menuItem_3);menu_2.add(menuItem_4);//每一栏添加事件menuItem_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//菜单栏事件}});menuItem_5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//菜单栏事件}});menuItem_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//菜单栏事件}});menuItem_3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//菜单栏事件}});    menuItem_4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//菜单栏事件}});}

也可以为菜单栏添加快捷键,这样通过键盘也可以实现上述功能,更加的便捷。

地图的读取

这个游戏的地图一般以文件形式存储在文件夹中,根据关卡读取文件的数据,并将数据存放到mymap数组中。

public void readmap(int k) {//读取第k关的地图BufferedReader br = null;String bb="";int c=0;String s;try{   File f;f=new File("shiyan4_maps\\"+k+".map");//地图文件地址,根据实际修改路径br=new BufferedReader(new FileReader(f));while ((s=br.readLine())!=null)//读取文件每一行,不为空添加到bb中{bb=bb+s;    }}catch (IOException e)//异常抛出{System.out.println(e);}byte[] d=bb.getBytes();//读取bb中的每一个字节,存放到d数组中int[] x=new int[bb.length()];for(int i=0;i<bb.length();i++)x[i]=d[i]-48;//每个字节从char数字变成int数字for(int i=0;i<20;i++){for(int j=0;j<20;j++)//将数据存到mymap数组中{mymap[j][i]=x[c];c++;}}}

玩家控制功能

通过上下左右键控制玩家箱子的移动,且要列举出所有可能的移动情况,根据情况来写各种移动结果。
以左移为例
可能出现的大致情况:
左侧为墙体:不移动
左侧为箱子:(分两种情况)
1.左侧的左侧为墙体,箱子,到达目的地 的箱子:不移动
2.左侧没障碍:可以移动
左侧为目的地:移动后做好标记,离开时要重新显示目的地
下面是根据上面的情况细分后写出的代码:

public void key_left() {int x=player_x;int y=player_y;//1为墙体,0和2为空白,3为箱子,4为目的地,5为玩家操控,6为到达目的地的箱子if(mymap[x-1][y]==1) {}else if(mymap[x-1][y]==3) {if(mymap[x-2][y]==1||mymap[x-2][y]==3||mymap[x-2][y]==6) {}else if(pd==1) {if(mymap[x-2][y]==4) {mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}}else {if(mymap[x-2][y]==4) {mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}}}else if(mymap[x-1][y]==6) {if(mymap[x-2][y]==1||mymap[x-2][y]==3||mymap[x-2][y]==6) {step--;}else if(pd==1) {if(mymap[x-2][y]==4) {mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}}else {if(mymap[x-2][y]==4){mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}}}else if(mymap[x-1][y]==4) {if(pd==1) {mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}else {mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}}else {if(pd==1) {mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}else {mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}}player_x=x;player_y=y;paint();//移动后重新显示新的地图}

最后附上本块内容完整的代码和运行截图

游戏界面完整代码

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.*;
public class game_tui_2 extends JFrame{JLabel[][] jl=new JLabel[20][20];//20*20的label,用于显示地图int[][] mymap =new int[20][20];//二维数组,用于存储地图数据JLabel jb_title =new JLabel();//显示第几关JLabel jb_step=new JLabel();//显示第几步JMenuBar menuBar = new JMenuBar();//菜单栏int level=1,player_x=0,player_y=0;int pd=0,step=0,MAX_level=10;public game_tui_2() {for(int i=0;i<20;i++) {//实例化label数组,并设置各label的大小和位置for(int j=0;j<20;j++) {jl[i][j]=new JLabel();this.add(jl[i][j]);jl[i][j].setBounds(i*30, j*30+40, 30, 30);}}//向窗体添加控件this.add(jb_title);this.add(jb_step);this.add(menuBar);jb_title.setBounds(670, 300, 100, 40);jb_title.setFont(new java.awt.Font("Dialog", 1, 30));//设置字体jb_step.setBounds(660, 400, 150, 40);jb_step.setFont(new java.awt.Font("Dialog", 1, 20));//设置字体//自己定义的函数MENU();//设置菜单的内容read_paint_map(level);//添加键盘事件this.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub              }@Overridepublic void keyPressed(KeyEvent e) {if(pd_victory()==1) {}else if(e.getKeyCode()==KeyEvent.VK_UP) {step++;jb_step.setText("本关走了:"+step+"步");key_up();}else if(e.getKeyCode()==KeyEvent.VK_DOWN) {step++;jb_step.setText("本关走了:"+step+"步");key_down();}else if(e.getKeyCode()==KeyEvent.VK_LEFT) {step++;jb_step.setText("本关走了:"+step+"步");key_left();}else if(e.getKeyCode()==KeyEvent.VK_RIGHT) {step++;jb_step.setText("本关走了:"+step+"步");key_right();}   }@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub} });//窗体属性this.setTitle("推箱子");//窗体名称this.setSize(900, 730);//窗体大小this.setDefaultCloseOperation(3);//窗体关闭按钮功能this.setLocationRelativeTo(null);//窗体居中this.setResizable(false);//窗体不可拉伸this.setLayout(null);//null可以使控件放到任意位置this.setVisible(true);//窗体可视}public int pd_victory() {//判断胜利条件是否满足for(int i=0;i<20;i++) {for(int j=0;j<20;j++) {if(mymap[i][j]==4||mymap[i][j]==3)  {return 0;}}}return 1;}public void MENU() {//菜单栏位置和大小menuBar.setBounds(0, 0, 900, 20);//菜单栏内容JMenu menu_1 = new JMenu("菜单(E)");JMenu menu_2 = new JMenu("更多(T)");//快捷键menu_1.setMnemonic(KeyEvent.VK_E);menu_2.setMnemonic(KeyEvent.VK_T);//菜单条目JMenuItem menuItem_1 = new JMenuItem("下一关(V)");JMenuItem menuItem_5 = new JMenuItem("上一关(B)");JMenuItem menuItem_2 = new JMenuItem("重新开始(N)");JMenuItem menuItem_3 = new JMenuItem("返回首页(M)");JMenuItem menuItem_4 = new JMenuItem("关于我们(H)");//快捷键menuItem_1.setMnemonic(KeyEvent.VK_V);menuItem_5.setMnemonic(KeyEvent.VK_B);menuItem_2.setMnemonic(KeyEvent.VK_N);menuItem_3.setMnemonic(KeyEvent.VK_M);menuItem_4.setMnemonic(KeyEvent.VK_H);//添加控件menuBar.add(menu_1);menuBar.add(menu_2);menu_1.add(menuItem_1);menu_1.add(menuItem_5);menu_1.add(menuItem_2);menu_1.add(menuItem_3);menu_2.add(menuItem_4);//每一栏添加事件menuItem_1.addActionListener(new ActionListener() {//下一关public void actionPerformed(ActionEvent arg0) {if(level!=MAX_level) {read_paint_map(++level);}else JOptionPane.showMessageDialog(null, "已经是最后一关了!!", "警告",JOptionPane.WARNING_MESSAGE);}});menuItem_5.addActionListener(new ActionListener() {//上一关public void actionPerformed(ActionEvent arg0) {if(level!=1) {read_paint_map(--level);}else JOptionPane.showMessageDialog(null, "已经是第一关了!!", "警告",JOptionPane.WARNING_MESSAGE);}});menuItem_2.addActionListener(new ActionListener() {//重新开始public void actionPerformed(ActionEvent arg0) {read_paint_map(level);}});menuItem_3.addActionListener(new ActionListener() {//返回首页public void actionPerformed(ActionEvent e) {//new game_tui_1();//dispose();//由于单独代码,做了注释处理}});   menuItem_4.addActionListener(new ActionListener() {//关于我们public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "java小游戏\n经供参考\n版本:7.1.5\n", "关于我们",JOptionPane.PLAIN_MESSAGE);}});}public void read_paint_map(int k) {//读取与绘制地图step=0;jb_step.setText("本关走了:"+step+"步");jb_title.setText("第"+k+"关");readmap(k);//读取地图文件for(int i=0;i<20;i++) {for(int j=0;j<20;j++) {if(mymap[i][j]==5) {player_x=i;player_y=j;//获取玩家操控人物的位置}}}paint();//绘制地图}public void paint() {//绘制地图ImageIcon[] icon = new ImageIcon[7];//icon数组//各种图片路径设置,根据实际自行修改icon[0] = new ImageIcon(); icon[1] = new ImageIcon("shiyan4_image/wall.png"); //墙icon[2] = new ImageIcon(); icon[3] = new ImageIcon("shiyan4_image/box1.png"); //箱子icon[4] = new ImageIcon("shiyan4_image/destination.png"); //目的地icon[5] = new ImageIcon("shiyan4_image/player.png");  //玩家icon[6] = new ImageIcon("shiyan4_image/box2.png"); //到达目的地的箱子//显示地图内容for(int i=0;i<20;i++) {for(int j=0;j<20;j++) {          jl[i][j].setIcon(icon[mymap[i][j]]);}}if(pd_victory()==1) {JOptionPane.showMessageDialog(null, "                         恭喜你通过本关!!", "消息",JOptionPane.PLAIN_MESSAGE);if(level!=MAX_level) {read_paint_map(++level);}else JOptionPane.showMessageDialog(null, "                    你已经完成所有关卡!!!", "恭喜",JOptionPane.PLAIN_MESSAGE);}}public void readmap(int k) {//读取第k关的地图BufferedReader br = null;String bb="";int c=0;String s;try{   File ff=new File("shiyan4_maps\\"+k+".map");//地图文件地址,根据实际自行修改路径br=new BufferedReader(new FileReader(f));while ((s=br.readLine())!=null)//读取文件每一行,不为空添加到bb中{bb=bb+s;   }}catch (IOException e)//异常抛出{System.out.println(e);}byte[] d=bb.getBytes();//读取bb中的每一个字节,存放到d数组中int[] x=new int[bb.length()];for(int i=0;i<bb.length();i++)x[i]=d[i]-48;//每个字节从char数字变成int数字for(int i=0;i<20;i++){for(int j=0;j<20;j++)//将数据存到mymap数组中{mymap[j][i]=x[c];c++;}}}public void key_up() {//上移int x=player_x;int y=player_y;if(mymap[x][y-1]==1) {step--;}else if(mymap[x][y-1]==3) {if(mymap[x][y-2]==1||mymap[x][y-2]==3||mymap[x][y-2]==6) {step--;}else if(pd==1) {if(mymap[x][y-2]==4) {mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;pd=0;}else {mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;pd=0;}}else {if(mymap[x][y-2]==4) {mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;}else {mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;}}}else if(mymap[x][y-1]==6) {if(mymap[x][y-2]==1||mymap[x][y-2]==3||mymap[x][y-2]==6) {step--;}else if(pd==1) {if(mymap[x][y-2]==4) {mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;}else {mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;}}else {if(mymap[x][y-2]==4){mymap[x][y-2]=6;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;pd=1;}else {mymap[x][y-2]=3;mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;pd=1;}}}else if(mymap[x][y-1]==4) {if(pd==1) {mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;}else {mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;pd=1;}}else {if(pd==1) {mymap[x][y-1]=5;mymap[x][y]=4;y=y-1;pd=0;}else {mymap[x][y-1]=5;mymap[x][y]=2;y=y-1;}}player_x=x;player_y=y;paint();}public void key_down() {//下移int x=player_x;int y=player_y;if(mymap[x][y+1]==1) {step--;}else if(mymap[x][y+1]==3) {if(mymap[x][y+2]==1||mymap[x][y+2]==3||mymap[x][y+2]==6) {step--;}else if(pd==1) {if(mymap[x][y+2]==4) {mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;pd=0;}else {mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;pd=0;}}else {if(mymap[x][y+2]==4) {mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;}else {mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;}}}else if(mymap[x][y+1]==6) {if(mymap[x][y+2]==1||mymap[x][y+2]==3||mymap[x][y+2]==6) {step--;}else if(pd==1) {if(mymap[x][y+2]==4) {mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;}else {mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;}}else {if(mymap[x][y+2]==4){mymap[x][y+2]=6;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;pd=1;}else {mymap[x][y+2]=3;mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;pd=1;}}}else if(mymap[x][y+1]==4) {if(pd==1) {mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;}else {mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;pd=1;}}else {if(pd==1) {mymap[x][y+1]=5;mymap[x][y]=4;y=y+1;pd=0;}else {mymap[x][y+1]=5;mymap[x][y]=2;y=y+1;}}player_x=x;player_y=y;paint();}public void key_left() {//左移int x=player_x;int y=player_y;if(mymap[x-1][y]==1) {step--;}else if(mymap[x-1][y]==3) {if(mymap[x-2][y]==1||mymap[x-2][y]==3||mymap[x-2][y]==6) {step--;}else if(pd==1) {if(mymap[x-2][y]==4) {mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}}else {if(mymap[x-2][y]==4) {mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}}}else if(mymap[x-1][y]==6) {if(mymap[x-2][y]==1||mymap[x-2][y]==3||mymap[x-2][y]==6) {step--;}else if(pd==1) {if(mymap[x-2][y]==4) {mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}}else {if(mymap[x-2][y]==4){mymap[x-2][y]=6;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}else {mymap[x-2][y]=3;mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}}}else if(mymap[x-1][y]==4) {if(pd==1) {mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;}else {mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;pd=1;}}else {if(pd==1) {mymap[x-1][y]=5;mymap[x][y]=4;x=x-1;pd=0;}else {mymap[x-1][y]=5;mymap[x][y]=2;x=x-1;}}player_x=x;player_y=y;paint();}public void key_right() {//右移int x=player_x;int y=player_y;if(mymap[x+1][y]==1) {step--;}else if(mymap[x+1][y]==3) {if(mymap[x+2][y]==1||mymap[x+2][y]==3||mymap[x+2][y]==6) {step--;}else if(pd==1) {if(mymap[x+2][y]==4) {mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;pd=0;}else {mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;pd=0;}}else {if(mymap[x+2][y]==4) {mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;}else {mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;}}}else if(mymap[x+1][y]==6) {if(mymap[x+2][y]==1||mymap[x+2][y]==3||mymap[x+2][y]==6) {step--;}else if(pd==1) {if(mymap[x+2][y]==4) {mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;}else {mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;}}else {if(mymap[x+2][y]==4){mymap[x+2][y]=6;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;pd=1;}else {mymap[x+2][y]=3;mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;pd=1;}}}else if(mymap[x+1][y]==4) {if(pd==1) {mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;}else {mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;pd=1;}}else {if(pd==1) {mymap[x+1][y]=5;mymap[x][y]=4;x=x+1;pd=0;}else {mymap[x+1][y]=5;mymap[x][y]=2;x=x+1;}}player_x=x;player_y=y;paint();}public static void main(String[] args) {// TODO Auto-generated method stubnew game_tui_2();}
}
如有错误
欢迎指出

下一篇:用JAVA制作小游戏——推箱子(三)

用JAVA制作小游戏——推箱子(二)相关推荐

  1. 用JAVA制作小游戏——推箱子(一)

    本篇博客是对推箱子游戏首页代码的展示 效果图: 难点: 在背景图上添加按钮. 由于直接使用add方法,会变成图片一块区域,按钮一块区域,彼此互不重叠,形成的界面效果不太好,因此用了JLayeredPa ...

  2. 用JAVA制作小游戏——推箱子(三)

    本篇博客主要是对推箱子地图编辑器功能的代码讲解. 首先给出这段代码的部分运行截图: 重难点: 地图编辑器主要有三个重难点: 需要有一个绘制地图的界面 能够实现地图绘制的功能 地图绘制完成后需要将地图内 ...

  3. 用JAVA制作小游戏——飞机大战(二)

    本篇博客是对飞机大战游戏使用代码的展示 重难点: 首先需要鼠标能够控制战机,使鼠标在窗口内时始终能够使战机的位置与鼠标相同,实现鼠标控制战斗机移动. 其次需要能够以一定的速度产生子弹和敌机,并且以一定 ...

  4. 用JAVA制作小游戏——飞机大战(三)

    本篇博客是对飞机大战游戏项目完整代码的展示 详细代码讲解: 用JAVA制作小游戏--飞机大战(一) 用JAVA制作小游戏--飞机大战(二) 最下方附整个程序的文件下载链接 代码展示 主界面 impor ...

  5. 用java制作小游戏:小恐龙跑酷

    用java制作小游戏:小恐龙跑酷 插入链接与图片 运行图片:( 第一次做游戏,画风比较丑哈!最左边的就是主角小恐龙了,中间的是障碍物仙人掌,右边的小狗也是障碍物,右上角的是分数条) 图片: 以下是Ja ...

  6. Java小游戏-推箱子

    摘要 推箱子是来自于日本的一个古老游戏,目的是在于训练逻辑思维能力,在一个狭小的空间里,要把木箱推到指定的位置,稍不小心箱子就会无法移动或者被通道堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安 ...

  7. C语言小游戏 ——推箱子

    文章目录 (1)内容描述 (2)功能 (3)设计目的 (4)总体设计 (5)明显缺点 (6)个人总结 7. 实例 实例一 实例二 实例三 实例四 实例五: (1)内容描述 描述:用户进入页面后可以进行 ...

  8. python小游戏——推箱子代码开源

    ♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至. 目录 一.效 ...

  9. c语言小游戏-推箱子

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 之前做了很多与easyx相关的游戏,这次我们之间用控制台做游戏试试看吧 就以推箱子游戏为例 首先就是引用头文 ...

最新文章

  1. java常用弹出式对话框
  2. c语言中预处理指令的作用,C语言中常用预处理指令
  3. 第一台鸿蒙手机是,第一台预装鸿蒙OS的手机终于登场。
  4. 童程童美机器人编程上海虹口校区_呼市童程童美少儿编程学习中心
  5. java list 排序_java 对list进行排序
  6. rpm软件管理程序,yum仓库的作用
  7. 控制电机正反转的c语言程序,步进电机正反转控制C语言程序,只为初学者.docx
  8. PMBOK2008中的三种沟通方式(草稿版)
  9. mysql 订单表 订单详情表 关联 排序 统计
  10. ps文字工具学习笔记
  11. Pytorch-> pack_padded_sequence()和pad_packed_sequence()
  12. Python常用小技巧(三)——批量修改图片尺寸
  13. 图的一些基本知识:图,邻居,度矩阵,邻接矩阵
  14. python删除指定字符串之间所有行_python:删除包含字符串的pandas数据帧中的所有行...
  15. vue axios请求成功却进入catch的原因分析
  16. 【老姐学PHP】PHP框架lavarel之Artisan命令
  17. 病原菌基因组快速搜索算法实现
  18. 【毕业设计】基于单片机的GPS定位位置记录系统 - 物联网 嵌入式 stm32
  19. SAP-SD-销售订单SO的可用性检查功能
  20. 笔试、面试题收集(主要是Python Web开发)编辑中。。。

热门文章

  1. java 动态获取IP地址(城市)
  2. solarwinds ipam功能说明手册
  3. r语言 精美rda图_R语言动态图可视化:如何、创建具有精美动画的图
  4. lnmp无法删除.user.ini
  5. Datepicker-for-Bootstrap 日期选择插件
  6. shell等待特定进程pid退出的方法
  7. 5万能搞定百平家装主材、家具、家电吗?
  8. epoll在ET和LT模式下读写
  9. Python入门3_之使用字符串
  10. springboot整合alibbaba-dubbo