2021年7月29日星期四

java小游戏java九宫格

问题来源于吾爱破解https://www.52pojie.cn/thread-1484202-1-1.html

编程目标一:根据下面的"游戏说明",实现该游戏程序,完成响应用户的输入、显示游戏局面、判定游戏胜负等功能。
编程目标二:在"编程目标一"的基础上,顺序记录用户从游戏开始到游戏结束的所有输入,并在游戏结束时保存游戏过程记录。
编程目标三:在"编程目标二"的基础上,程序实现如下功能:从游戏过程记录中读取数据并回放游戏从开始到结束的整个过程。
编程目标四:在"编程目标二"的基础上,记录用户获胜时所用的移动步数,设计一个移动步数前10名的排行榜,使用步数越少,排名越高。用户获胜步数入榜时,提示用户输入昵称。排行榜显示名次、用户昵称、移动步数等信息。
【游戏说明】有一种游戏,其规则如下:有一个 3×3 的九宫方格棋盘,在8个方格中摆棋子,每个棋子上标有1~8中的某一个数字。棋盘中留有一个空格,空格周围的棋子可以移到空格中,一次只能移动一个棋子。图 (a) 定义了棋盘的初始局面。经过连续的若干次移动棋子后,当 3×3 方格呈现出图 (b) 所示的局面时,表示获胜;当呈现出图 (c) 所示的局面时,表示失败。游戏获胜或失败时,本轮游戏结束。

实现代码

package com.ming;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Spfpc { private int data_init[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 0}}; // 初始 private int data_success[][] = {{8, 7, 6}, {5, 0, 4}, {3, 2, 1}}; // 成功 private int data_fail[][] = {{6, 7, 8}, {5, 0, 4}, {3, 2, 1}}; // 失败 private String success; // 正确 private String fail; // 错误 private List<int[][]> history = new ArrayList<>(); // 移动记录 public Spfpc() {  init(); } /**  * @return void  * @Description 正确答案追加成字符串  * @date 2021/7/28 17:18  * @auther FMm  */ public void init() {  StringBuffer stringBuffer = new StringBuffer();  for (int i = 0; i < data_success.length; i++) {   for (int j = 0; j < data_success[i].length; j++) {    stringBuffer.append(data_success[i][j]);   }  }  success = stringBuffer.toString();  stringBuffer.delete(0, stringBuffer.length());  for (int i = 0; i < data_fail.length; i++) {   for (int j = 0; j < data_fail[i].length; j++) {    stringBuffer.append(data_fail[i][j]);   }  }  fail = stringBuffer.toString(); } /**  * @return void  * @Description 移动后每次转换  * @date 2021/7/28 17:20  * @auther FMm  */ public String arrayToString() {  StringBuffer stringBuffer = new StringBuffer();  for (int i = 0; i < data_init.length; i++) {   for (int j = 0; j < data_init[i].length; j++) {    stringBuffer.append(data_init[i][j]);   }  }  return stringBuffer.toString(); } /**  * @param params 移动的数字  * @return java.lang.String  * @Description 通过选择要移动的数字 查找对应下标 x y  * @date 2021/7/28 17:23  * @auther FMm  */ public String getIndex(int params) {  for (int i = 0; i < data_init.length; i++) {   for (int j = 0; j < data_init[i].length; j++) {    int i1 = data_init[i][j];    if (i1 == params) {     return i + "," + j;    }   }  }  return ""; } /**  * @param i  * @return boolean  * @Description 验证 上下左右 是否正确  * @date 2021/7/28 17:24  * @auther FMm  */ public static boolean checkPos(int i) {  if (i == 2 | i == 4 | i == 6 | i == 8) {   return true;  }  return false; } /**  * @param pos 移动的方位  * @param input 移动的数字  * @return void  * @Description 移动数字  * @date 2021/7/28 17:27  * @auther FMm  */ public void moveIndex(int pos, int input) {  String index = getIndex(input);  String[] split = index.split(",");  int x = Integer.parseInt(split[0]);  int y = Integer.parseInt(split[1]);//  上8下2左4右6  if (pos == 8) {   if (x == 0 || data_init[x - 1][y] != 0) {    System.out.println("无法向上移动");   } else {    data_init[x - 1][y] = input;    data_init[x][y] = 0;   }  } else if (pos == 2) {   if (x == 2 || data_init[x + 1][y] != 0) {    System.out.println("无法向下移动");   } else {    data_init[x + 1][y] = input;    data_init[x][y] = 0;   }  } else if (pos == 4) {   if (y == 0 || data_init[x][y - 1] != 0) {    System.out.println("无法向左移动");   } else {    data_init[x][y - 1] = input;    data_init[x][y] = 0;   }  } else if (pos == 6) {   if (y == 2 || data_init[x][y + 1] != 0) {    System.out.println("无法向右移动");   } else {    data_init[x][y + 1] = input;    data_init[x][y] = 0;   }  }  history.add(data_init);  outResult(); } /**  * @return void  * @Description 输出移动后的 结果  * @date 2021/7/28 17:26  * @auther FMm  */ public void outResult() {  for (int i = 0; i < data_init.length; i++) {   System.out.printf("[");   System.out.printf("\t");   for (int j = 0; j < data_init[i].length; j++) {    int i1 = data_init[i][j];    if (i1 == 0) {     System.out.printf("-");    } else {     System.out.printf(String.valueOf(i1));    }    System.out.printf("\t");   }   System.out.printf("]");   System.out.println();  } } public static void main(String[] args) {  Spfpc spfpc = new Spfpc();  System.out.println("【游戏说明】有一种游戏,其规则如下:");  System.out.println("有一个 3×3 的九宫方格棋盘,在8个方格中摆棋子,每个棋子上标有1~8中的某一个数字");  System.out.println("棋盘中留有一个空格,空格周围的棋子可以移到空格中,一次只能移动一个棋子");  System.out.println("图 (a) 定义了棋盘的初始局面,经过连续的若干次移动棋子后,当 3×3 方格呈现出");  System.out.println("图 (b) 所示的局面时,表示获胜;当呈现出");  System.out.println("图 (c) 所示的局面时,表示失败。游戏获胜或失败时,本轮游戏结束");  System.out.println("图 (a)\t\t\t图 (b)\t\t\t图 (c)\t\t");  System.out.println("1\t" + "2\t" + "3\t\t" + "8\t" + "7\t" + "6\t\t" + "6\t" + "7\t" + "8\t");  System.out.println("4\t" + "5\t" + "6\t\t" + "5\t" + "-\t" + "4\t\t" + "5\t" + "-\t" + "4\t");  System.out.println("7\t" + "8\t" + "-\t\t" + "3\t" + "2\t" + "1\t\t" + "3\t" + "2\t" + "1\t");  Scanner scanner = new Scanner(System.in);  System.out.print("请输入要移动的数字【1-8】数字:");  int number = spfpc.getNumber(scanner);  System.out.print("请输入要移动的方向【上8下2左4有6】:");  int pos = spfpc.getPos(scanner);......

原文转载:http://www.shaoqun.com/a/892320.html

跨境电商:https://www.ikjzd.com/

primc:https://www.ikjzd.com/w/129

法瑞儿:https://www.ikjzd.com/w/412

汇通达:https://www.ikjzd.com/w/1758


问题来源于吾爱破解https://www.52pojie.cn/thread-1484202-1-1.html编程目标一:根据下面的"游戏说明",实现该游戏程序,完成响应用户的输入、显示游戏局面、判定游戏胜负等功能。编程目标二:在"编程目标一"的基础上,顺序记录用户从游戏开始到游戏结束的所有输入,并在游戏结束时保存游戏过程记录。编程目标三:在"编程目标二"的基础上,程序实现如下功能:从游戏过程记录
四川震区旅游振兴 :http://www.30bags.com/a/406797.html
四川助力文旅企业复工复产 出台"金融+文旅"帮扶措施:http://www.30bags.com/a/434409.html
四川资阳市:加强文旅品牌创建营销 不断提升城市影响力:http://www.30bags.com/a/426966.html
四川资阳市:开辟"非遗+扶贫"融合发展之路:http://www.30bags.com/a/434683.html
男朋友在车里㖭我下面 原来宝贝喜欢这种姿势:http://lady.shaoqun.com/a/247149.html
坐在男友腿上被吸奶 男朋友边吃奶边做:http://lady.shaoqun.com/a/247600.html
老汉粗大不带套 他的强壮让我欲仙欲死:http://lady.shaoqun.com/m/a/248321.html
我想㖭你腿间的花 乖乖宝贝让我爽一下:http://www.30bags.com/m/a/249760.html
深圳宝安科技馆8月展览汇总(持续更新):http://www.30bags.com/a/517601.html
2021时尚深圳展蝶讯馆展览好看吗:http://www.30bags.com/a/517602.html
2021时尚深圳蝶讯馆观展攻略:http://www.30bags.com/a/517603.html
深圳欢乐谷夏浪音乐节有朱星杰吗:http://www.30bags.com/a/517604.html

没有评论:

发表评论