2048游戏(java控制台-原生jdk实现)
来源:互联网 发布:php list注意 编辑:程序博客网 时间:2024/06/05 17:23
import java.util.Random;import java.util.Scanner;public class game_2048 {public static int score = 0;public static Random random = new Random();public static void print(int[][] arr) {int n = arr.length;int m = arr[0].length;for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){if(arr[i][j] > 10){System.out.print(arr[i][j] + " ");}else {System.out.print(arr[i][j] + " ");}}System.out.println();}}public static String input(Scanner sc) {System.out.println("please input:(w:up, s:down, a:left, d:right)");String input = sc.next();return input;}public static boolean isFinish(int[][] arr) {int n = arr.length;int m = arr[0].length;for(int i = 0;i < n;i++){for(int j = 0;j < m-1;j++){if ((arr[i][j] == 0) || (arr[i][j] == arr[i][j+1])) {return false;}}}for(int j = 0;j < m;j++){for(int i = 0;i < n-1;i++){if ((arr[i][j] == 0) || (arr[i][j] == arr[i+1][j])) {return false;}}}return true;}public static int makeData(Random random) {int r = random.nextInt(10);if(r >= 5){return 2;}return 0;}public static void moveUp(int[][] arr) {int n = arr.length;int m = arr[0].length;for(int j = 0;j < m;j++){//上移for(int i = 0;i < n;i++){if(arr[i][j] == 0){for(int k = i+1;k < n;k++){if(arr[k][j] != 0){arr[i][j] = arr[k][j];arr[k][j] = 0;break;}}}}//归并for(int i = 0;i < n-1;i++){if(arr[i][j] == arr[i+1][j]){arr[i][j] *= 2;arr[i+1][j] = 0;score += arr[i][j];}}//产生随机数for(int i = n-1;i >= 0;i--){if(arr[i][j] == 0){arr[i][j] += makeData(random);}}}}public static void moveDown(int[][] arr) {int n = arr.length;int m = arr[0].length;for(int j = 0;j < m;j++){//下移for(int i = n-1;i >= 0;i--){if(arr[i][j] == 0){for(int k = i-1;k >= 0;k--){if(arr[k][j] != 0){arr[i][j] = arr[k][j];arr[k][j] = 0;break;}}}}//归并for(int i = n-1;i > 0;i--){if(arr[i][j] == arr[i-1][j]){arr[i][j] *= 2;arr[i-1][j] = 0;score += arr[i][j];}}//产生随机数for(int i = 0;i < n;i++){if(arr[i][j] == 0){arr[i][j] += makeData(random);}}}}public static void moveLeft(int[][] arr) {int n = arr.length;int m = arr[0].length;for(int i = 0;i < n;i++){//左移for(int j = 0;j < m;j++){if(arr[i][j] == 0){for(int k = j+1;k < m;k++){if(arr[i][k] != 0){arr[i][j] = arr[i][k];arr[i][k] = 0;break;}}}}//归并for(int j = 0;j < m-1;j++){if(arr[i][j] == arr[i][j+1]){arr[i][j] *= 2;arr[i][j+1] = 0;score += arr[i][j];}}//产生随机数for(int j = m-1;j >= 0;j--){if(arr[i][j] == 0){arr[i][j] += makeData(random);}}}}public static void moveRight(int[][] arr) {int n = arr.length;int m = arr[0].length;for(int i = 0;i < n;i++){//左移for(int j = m-1;j >= 0;j--){if(arr[i][j] == 0){for(int k = j-1;k >= 0;k--){if(arr[i][k] != 0){arr[i][j] = arr[i][k];arr[i][k] = 0;break;}}}}//归并for(int j = m-1;j > 0;j--){if(arr[i][j] == arr[i][j-1]){arr[i][j] *= 2;arr[i][j-1] = 0;score += arr[i][j];}}//产生随机数for(int j = 0;j < m;j++){if(arr[i][j] == 0){arr[i][j] += makeData(random);}}}}public static void run() {Scanner sc = new Scanner(System.in);int[][] arr = new int[4][4];while(true){if (!isFinish(arr)) {String input = input(sc);switch (input) {case "w":moveUp(arr);break;case "s":moveDown(arr);break;case "a":moveLeft(arr);break;case "d":moveRight(arr);break;default:break;}print(arr);}else {System.out.println("score:" + score);break;}}}public static void main(String[] args) {run();}}
阅读全文
0 0
- 2048游戏(java控制台-原生jdk实现)
- JAVA实现简单控制台五子棋游戏
- c++实现2048游戏(控制台)
- java--控制台梭哈游戏
- java 实现一个基于控制台的 扫雷 游戏
- Java JDK 控制台环境设置
- 原生JavaScript实现弹球游戏
- C++控制台游戏2048
- Java控制台小游戏------猜拳游戏
- java原生实现webservice
- java序列化与反序列化(4)------jdk原生序列化机制实现深拷贝
- 协同过滤推荐算法(java原生JDK实现-附源码地址)
- java实现控制台五子棋
- 原生JavaScript实现连连看游戏
- 原生JS+Canvas实现五子棋游戏实例
- 2048游戏(控制台版)
- C# 控制台实现的五子棋游戏
- 实现控制台的猜数字游戏。
- Android 项目开发必备-Utils类的建立与使用
- 基于ajaxFileUpload,兼容ie7以上、chrome等浏览器的文件上传功能
- API3
- 欢迎使用CSDN-markdown编辑器
- dobbo配置
- 2048游戏(java控制台-原生jdk实现)
- python3正则模块中的(?(id)yes|no)构造
- Scroller
- Java 反射机制
- 文章标题
- python 写的方法返回的是个中文,在 rf 日志中显示的却是乱码解决方法
- PHP之static静态变量详解(一)
- Adversarial Sample misleading the Model(生成对抗样本迷惑模型)
- 问题Incompatible ssh peer