前情提要,祝2021年的蓝桥杯小伙伴成绩突出。

贪心、杂凑、递归、分类、评分、哈希、共识、聚类、分治、启发式、粒子群、最大期望、最小完成时间、序列最小优化。。。。算法无数,但是基础类似,无非坐标处理。那么开启一个坐标小游戏2048吧~


一个简单的2048小游戏的操作提示——Java控制台版本:

import java.util.Random;
import java.util.Scanner;/*** * @author 老师付 2021年5月29日15:05:21*/
public class Action {static Random random = new Random();static Scanner scanner = new Scanner(System.in);private static boolean isNotFull(int[][] board) {for (int[] ia : board)for (int i : ia)if (i == 0)return true;return false;}private static void generate(int[][] board) {assert isNotFull(board);while (true) {int number = random.nextInt(16);int row = number / 4;int col = number % 4;if (board[row][col] == 0) {board[row][col] = System.currentTimeMillis() % 2 == 0 ? 2 : 4;break;}}}static int[][] init() {int[][] numArray = new int[4][4];generate(numArray);generate(numArray);return numArray;}static void showBoard(int[][] board) {for (int[] numArray : board) {for (int i : numArray) {if (i == 0) {System.out.printf("%4s", ".");} else {System.out.printf("%4s", i);}}System.out.println();}}static char acceptInput() {while (true) {String line = scanner.nextLine().toLowerCase();char direction = line.charAt(0);if ("wasdWASD".indexOf(direction) != -1) {return direction;}else {System.out.println("请按要求输入操作指令:");System.out.println("up:w/W");System.out.println("left:a/A");System.out.println("down:s/S");System.out.println("right:d/D");}}}static void downBlock(int[][] numArray) {for (int i = 0; i < 4; i++) {for (int k = 0; k < 3; k++) {for (int j = 3; j > 0; j--) {if (numArray[j][i] == 0) {numArray[j][i] = numArray[j - 1][i];numArray[j - 1][i] = 0;}}for (int j = 3; j > 0; j--) {if (numArray[j][i] == numArray[j - 1][i]) {numArray[j][i] = 2 * numArray[j][i];numArray[j - 1][i] = 0;}}}}generate(numArray);}static void upBlock(int[][] numArray) {for (int i = 0; i < 4; i++) {for (int k = 0; k < 3; k++) {for (int j = 0; j < 3; j++) {if (numArray[j][i] == 0) {numArray[j][i] = numArray[j + 1][i];numArray[j + 1][i] = 0;}}for (int j = 0; j < 3; j++) {if (numArray[j][i] == numArray[j + 1][i]) {numArray[j][i] = 2 * numArray[j][i];numArray[j + 1][i] = 0;}}}}generate(numArray);}static void leftBlock(int[][] numArray) {for (int i = 0; i < 4; i++) {for (int k = 0; k < 3; k++) {for (int j = 0; j < 3; j++) {if (numArray[i][j] == 0) {numArray[i][j] = numArray[i][j + 1];numArray[i][j + 1] = 0;}}for (int j = 0; j < 3; j++) {if (numArray[i][j] == numArray[i][j + 1]) {numArray[i][j] = 2 * numArray[i][j];numArray[i][j + 1] = 0;}}}}generate(numArray);}static void rightBlock(int[][] numArray) {for (int i = 0; i < 4; i++) {for (int k = 0; k < 3; k++) {for (int j = 3; j > 0; j--) {if (numArray[i][j] == 0) {numArray[i][j] = numArray[i][j - 1];numArray[i][j - 1] = 0;}}for (int j = 3; j > 0; j--) {if (numArray[i][j] == numArray[i][j - 1]) {numArray[i][j] = 2 * numArray[i][j];numArray[i][j - 1] = 0;}}}}generate(numArray);}static void process(int[][] board, char direction) {switch (direction) {case 'w':upBlock(board);break;case 'a':leftBlock(board);break;case 's':downBlock(board);break;case 'd':rightBlock(board);break;}}public static void main(String[] args) {System.out.println("游戏开始:请按照操作提示游戏:");System.out.println("up:w/W");System.out.println("left:a/A");System.out.println("down:s/S");System.out.println("right:d/D");int[][] board = init();while (true) {showBoard(board);char direction = acceptInput();process(board, direction);}}
}

玩法示例:输入大小写均可。

2048——Java控制台版本相关推荐

  1. 基于JAVA控制台版本银行自动取款机(修改版)

    这是我第一次写项目所进行的修改之后的内容,感觉比之前写的通顺而且相比较更加容易理解. 项目要求: 实现银行自动取款机的以下基本操作功能:读卡.取款.存款.查询.(自动取款机中修改密码不作要求) 其他要 ...

  2. 基于JAVA控制台版本银行自动取款机

    这是我第一次写项目,感觉还行吧.不敢说很好. 项目要求: 实现银行自动取款机的以下基本操作功能:读卡.取款.存款.查询.(自动取款机中修改密码不作要求) 其他要求: 用户在账号密码正确进入主界面后,只 ...

  3. 三国杀java游戏_计算机毕业课程设计源码-131Java三国杀游戏控制台版本

    file://C:\Users\Administrator\Desktop\Java三国杀游戏控制台版本 (1 folders, 3 files, 43.90 MB, 44.11 MB in tota ...

  4. IDEA+Java控制台实现宠物管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.获取资源 二.系统展示 1.登录系统 2.查询宠物信息 3.增加宠物信息 4.更新宠物信息 5.删除宠物信息 三.部分代码 Busin ...

  5. java怎么打开控制台_java控制台怎么打开?如何启用和查看 Java 控制台?

    本文适用于:平台:Windows8,Windows7, Vista,WindowsXP, Windows2000Java 版本: 6.0 Java 控制台提供有关以下方面的信息:Java 版本.用户主 ...

  6. IDEA+Java控制台实现医院管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.获取资源 二.系统展示 1.登录系统 2.查询病人信息 3.新增病人信息 4.更新病人信息 5.删除病人信息 三.部分代码 Busin ...

  7. Java控制台不运行怎么办_java控制台自动关闭,无法运行java应用程序

    打开java应用程序,弹出了java控制台,但1秒钟后就关闭了.看不懂日志,报错日志如下,还请高手指教:(之前是好的,安装myeclipse9.0以后就是像现在这样.把myeclipse9.0彻底删除 ...

  8. IDEA+Java控制台实现学生档案管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.获取资源 二.系统展示 1.登录系统 2.查询学生档案信息 3.增加学生档案信息 4.更新学生档案信息 5.删除学生档案信息 三.部分 ...

  9. 13.JavaAPI(DAO模式+图书管理系统控制台版本)

    目录 一.理解程序设计分层的思想 二.DAO设计模式的组成以及各部分的开发 2.1 概述 2.2 DAO模式作用 2.3 DAO模式组成 三.DAO模式实现图书信息管理系统控制台版本之增删改查 3.1 ...

最新文章

  1. tushare pro接口_利用tushare获取新闻联播文字稿并制作词云
  2. 吴恩达深度学习笔记12-Course4-Week3【目标检测】
  3. webstorm使用插件 statistic 统计代码
  4. 一个电脑安装多个系统的几个办法
  5. Python排序算法---快速排序
  6. lnmp升级PHP环境
  7. VS2010使用教程(使用VS2010编写C语言程序)
  8. 2019考研数学汤家凤张宇李永乐复习资料
  9. u盘插上电脑后计算机没没磁盘,U盘插上电脑没有显示“可移动磁盘”的解决
  10. Typecho中handsome主题如何增加侧边导航栏
  11. python 学习(八—1) 项目:生成随机的测试试卷文件
  12. gyb优化事项(2)
  13. 如何让生活充满充实感
  14. windows那些讨厌的CPU占用进程
  15. 丁香医生vue开发项目,接口用的主要是官方开放的Api接口,无后端
  16. css样式写一个公告通知
  17. linux小红帽实验心得,《小红帽》读后感读书心得400字五篇
  18. idea maven 打包报错问题、jar包下载慢或者失败爆红、plugins爆红等配置问题
  19. linux 内核下载,Linux Kernel
  20. mysql inserted表_数据库inserted的搜索结果-阿里云开发者社区

热门文章

  1. PHP图片间隙用什么代码,如何解决CSS图片下面有间隙的问题
  2. docker java 不兼容_Apple M1 芯片不支持 Docker?Docker:正在努力适配
  3. 支付二维码php能实现吗_(实用篇)微信支付扫码支付php版
  4. ubuntu 安装lamp
  5. [Win32]一个调试器的实现(二)调试事件的处理
  6. 10.2-3 ifupifdown:激活与禁用网络接口
  7. 3.23 vi/vim:纯文本编辑器
  8. mysql之case_mysql存储过程之case语句
  9. opencv 图像 抠图 算法_人工智能 | 不用绿幕也能实时抠图,商汤等提出只需单张图像、单个模型的新方法MODNet...
  10. 1230: 最小花费(spfa)