问题来源于吾爱破解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
没有评论:
发表评论