java二维数组实现推箱子小游戏

本文实例为大家分享了java实现推箱子小游戏的具体代码,供大家参考,具体内容如下

二维数组

二维数组:类似于二维表格(有很多层,每一层有多个房间的楼房)

数组声明:
数据类型[][]数据名 = new 数据类型[行数][列数];
获取二维数组的长度:数组名.lengt 得到的是行数
数组名[行下标].length 得到的是列数

推箱子小游戏

import java.util.Random;
import java.util.Scanner;

/*
 * 推箱子的小游戏
 */
public class Test02 {

 public static void main(String[] args) {
 Random r = new Random();
 Scanner sc = new Scanner(System.in);
 int[][]dt = new int[10][10];
 //随机箱子,人和终点位置 0代表没有东西,1代表人 2代表箱子 3代表终点
 int xh = r.nextInt(8)+1;//随机箱子坐标
 int xl = r.nextInt(8)+1;
 dt[xl][xh] = 2;
 int rh = 8;//确定人的坐标
 int rl = 8;
 dt[rh][rl] = 1;
 int zh = r.nextInt(10);//随机终点的坐标
 int zl = r.nextInt(10);
 dt[zh][zl] = 3;
 //画地图
 while (true) {
 for (int i = 0; i < dt.length; i++) {
 for (int j = 0; j < dt.length; j++) {
  if (dt[i][j]==1) {
  System.out.print("╋");
  }else if (dt[i][j]==2) {
  System.out.print("■");
  }else if (dt[i][j]==3) {
  System.out.print("▲");
  }else{
  System.out.print("◻");
  }
 }

 System.out.println();//打印完一行换行
 }
 //如果箱子坐标和终点坐标重合,提示游戏完成,结束循环
 if (xl==zl&&xh==zh) {
  System.out.println("恭喜,过关");
  break;
 }
 System.out.println("操作规则:a代表左移,s代表下移,d代表右移,w代表上移");
 System.out.println("请操作");
 String c = sc.next();
 switch(c){
 case "a":
  if (rl>0) {
  //如果箱子和人在同一行,并且箱子在人的左侧,则可以推动箱子
  if (rh==xh&&rl==xl+1) {
  if (xl>0) {//箱子和人相邻
  xl--;
  dt[xh][xl] = 2;
  dt[rh][rl] = 0;
  rl--;
  dt[rh][rl] = 1;
  }
  }else{//箱子和人不相邻
  dt[rh][rl]=0;
  rl--;
  dt[rh][rl]=1;
  }
  }
  break;
 case "d":
  if (rl<9) {
  //如果箱子和人在同一行,并且箱子在人的右侧,则可以推动箱子
  if (rh==xh&&rl==xl-1) {
  if (xl<9) {
  xl++;
  dt[xh][xl] = 2;
  dt[rh][rl] = 0;
  rl++;
  dt[rh][rl] = 1;
  }
  }else{
  dt[rh][rl]=0;
  rl++;
  dt[rh][rl]=1;
  }
  }
  break;
 case "w":
  if (rh>0) {
  //如果箱子和人在同一列,并且箱子在人的上侧,则可以推动箱子
  if (rl==xl&&rh==xh+1) {
  if(xh>0){
  xh--;
  dt[xh][xl] = 2;
  dt[rh][rl] = 0;
  rh--;
  dt[rh][rl] = 1;
  }
  }else{
  dt[rh][rl]=0;
  rh--;
  dt[rh][rl]=1;
  }
  }
  break;
 case "s":
  if (rh<9) {
  //如果箱子和人在同一列,并且箱子在人的下侧,则可以推动箱子
  if (rl==xl&&rh==xh-1) {
  if(xh>0){
  xh++;
  dt[xh][xl] = 2;
  dt[rh][rl] = 0;
  rh++;
  dt[rh][rl] = 1;
  }
  }else{
  dt[rh][rl]=0;
  rh++;
  dt[rh][rl]=1;
  }

  }
  break;
  default:
  System.out.println("你会玩吗?请继续");
  break;

 }
 }
 }
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java实现简单推箱子游戏

    本文实例为大家分享了Java实现简单推箱子游戏的具体代码,供大家参考,具体内容如下 *编写一个简易的推箱子游戏,使用10*8的二维字符数据表示游戏画面,H表示墙壁; &表示玩家角色: o表示箱子,表示目的地.玩家可以通过输入a.d.w. s字符控制角色 移动,当箱子推到目的地时显示游戏结束,运行结果如图所示. package test; import java.util.Random; import java.util.Scanner; public class test3 { public s

  • java实现简单的推箱子小游戏

    我们做的是 "灰太狼推箱子" 的小游戏 首先准备需要的图片: 然后放入二进制文件(所谓的地图) 当然music是必不可少的 目录: 话不多说直接上代码: package com.xhh.xyx; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.io.*; import javax.sound.midi.*; import java.util.Stack; public class

  • Java实现推箱子游戏

    本文实例为大家分享了Java实现推箱子游戏的具体代码,供大家参考,具体内容如下 package Test1; //用于调用Test2包 import Test2.*; import java.awt.*; import javax.swing.*; public class APP extends JFrame{ public static void main(String[] args) { // TODO Auto-generated method stub APP a = new APP(

  • java实现推箱子小游戏

    本文实例为大家分享了java实现推箱子游戏的具体代码,供大家参考,具体内容如下 运行示例: 图形界面由swing组件构成 生成地图的算法如下 创建地图算法(produceMap):先将二维数组全置为1,代表初始状态全为墙.先随机产生两个不重合的点,一个作为人的起点,另一个作为箱子的起点.从起点开始,随机朝四个方向走一定的步数,若走到的点不是空地,即对应数组元素不为0,则将该点设为空地,即数组元素设为0.将地图分为左上.左下.右上和右下四个区域,并设置四个变量记录四个区域已开辟空地的数量.每开辟一

  • java二维数组实现推箱子小游戏

    本文实例为大家分享了java实现推箱子小游戏的具体代码,供大家参考,具体内容如下 二维数组 二维数组:类似于二维表格(有很多层,每一层有多个房间的楼房) 数组声明: 数据类型[][]数据名 = new 数据类型[行数][列数]; 获取二维数组的长度:数组名.lengt 得到的是行数 数组名[行下标].length 得到的是列数 推箱子小游戏 import java.util.Random; import java.util.Scanner; /* * 推箱子的小游戏 */ public clas

  • Java二维数组简单定义与使用方法示例

    本文实例讲述了Java二维数组简单定义与使用方法.分享给大家供大家参考,具体如下: Java的二维数组是先创建一个一维数组,然后该数组的元素再引用另外一个一维数组.在使用二维数组的时候,通过两个中括号[]来访问每一层维度的引用,直到访问到最终的数据. public class MultiDimArray{ /** * @param args */ public static void main(String[] args) { int[][] arr = new int[3][]; arr[0]

  • Java二维数组实战案例

    本文实例讲述了Java二维数组.分享给大家供大家参考,具体如下: 一 点睛 1 每行的元素个数不同的二维数组 Java定义二维数组更加灵活,允许二维数组中的每行的元素个数不相等,这点与其他编程语言不同,例如下面这个二维数组,其中第1行有4个元素,第2行有3个元素,第3行有5个元素 int [][] num={ {1,2,3,4}, {1,2,3}, {1,2,3,4,5} }; 下面的语句是声明整型的二维数组num并分配空间,其中第1行4个元素,第2行3个元素,第3行5个元素 int [][]

  • Java二维数组与动态数组ArrayList类详解

    Java二维数组 Java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int[2][3]; int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; 2.二维数组遍历 //遍历二维数组 public class Traverse_a_two_dimensional_array { public static void main(String[] ar

  • java二维数组指定不同长度实例方法

    我们知道二维数组,是在一维数组的基础上进行了维度的增加.那么在实际使用的过程中,有时候我们所需要的二维数组,它们其中的维度是不同的,这就需要我们手动的进行设置.下面我们就来一起探究,二维数组在改变维度长度大小的方法,并辅以实例进行代码展示. 1.二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的.声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组.但是注意,第一维大小不能空缺(不能只指定列数不指定行数). public class ArrayTest4

  • java二维数组基础知识详解

    目录 1. 查找 2. 顺序查找 3. 二分查找 4. 多维数组 4.1 二维数组 175 4.2 二维数组细节 5. 二维数组的使用方式 176 6. 二维数组的动态初始化 1.先声明:类型 数组名[][]; 再定义(开辟空间) 数组名 = new 类型[大小][大小] 2.动态初始化-列数不确定 178 7. 二维数组的静态初始化 179 8. 二维数组练习 180 8.1 int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和 1. 查找 1) 顺

  • js推箱子小游戏步骤代码解析

    推箱子小游戏大家肯定都玩过,之所以写这篇文章,是觉得这个小游戏足够简单好理解 demo: 步骤解析: 本文代码已经放在了github上面了,里面也进行了很详细的代码注释,可以copy下来,在本地运行一下看看. 1. 渲染地图 html结构: html结构十分简单,只要弄一堆div,来放置地图的class就可以了,我这里初始化了12*9个div,地图里最多九行高度. 这些div都是同样大小,地图渲染出来区别的只是颜色的不同. 地图函数: var box=$('.box div'); //地图使用的

  • C语言代码实现推箱子小游戏

    本文实例为大家分享了C语言实现推箱子小游戏的具体代码,供大家参考,具体内容如下 本次游戏是个推箱子第一关最简单的小游戏 有详细注释,下面是做出来的游戏界面 游戏操作说明和功能说明: 1.按wasd控制小人的上下左右移动. 2.按 r 重新开始游戏 3.游戏开始有操作介绍 4.游戏结束有胜利提示 游戏原理分析 1.游戏开始时的星星个数 = 箱子在星星上的个数时 , 游戏胜利. 2.按 r 键重新开始游戏, 我们需要定义一个量 map_1[8][8] 来保存游戏初始时的界面, 操作时我们将其赋值给

  • 用C++实现推箱子小游戏

    前言 推箱子小游戏相信是很多人的同年记忆了,今天用c++语言来尝试下,用的是vs编译器. 代码还有很多可以优化的地方,为了更直观了解函数的形参和实参,所以地图没有用全局变量声明了,其实用全局变量声明会简洁很多. 头文件和main函数分享在最下面了. 提示:以下是本篇文章正文内容,下面案例可供参考 一.初始化游戏数据 void GameInit(int(*&pMap)[10][10], int index)//两张地图数据 { // static:返回静态全局区变量 static int loca

  • C++实现推箱子小游戏源码

    本文实例为大家分享了C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 功能尚为完善. // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<windows.h> #define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code) & 0x8000 ? 1 : 0 using

随机推荐