cmd版贪吃蛇_贪吃蛇老版本无敌版

cmd版贪吃蛇_贪吃蛇老版本无敌版importjava.awt.*;importjava.util.LinkedList;importjava.util.Scanner;/***@authoraachen0*@date2018/3/2713:56*IDE:IntelliJIDEA*/publicclassSnakeGame{staticfinalintWIDTH=…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

import java.awt.*; import java.util.LinkedList; import java.util.Scanner; /**  * @author aachen0  * @date 2018/3/27 13:56  * IDE:IntelliJ IDEA  */ public class SnakeGame {  static final int WIDTH = 40, HEIGHT = 10;  static char[][] map = new char[HEIGHT][WIDTH];  public static void main(String[] args) {  SnakeGame snakeGame = new SnakeGame();  snakeGame.initBackground();//初始化背景,放只虫子  SnakeLine snakeLine = new SnakeLine();  snakeLine.initSnake();//初始化一条蛇  snakeGame.putSnakeInMap(snakeLine);  snakeGame.show();//显示一下  //键盘移动蛇进行游戏  Scanner scanner = new Scanner(System.in);  int move;  while (true) {  System.out.println("输入AWSD控制蛇的移动,Q退出游戏");  String choice = scanner.next();  switch (choice) {  case "a":  case "A":  move = 2;  break;  case "s":  case "S":  move = 1;  break;  case "w":  case "W":  move = 3;  break;  case "d":  case "D":  move = 0;  break;  case "q":  case "Q":  int points=snakeLine.snakePoints.size();  snakeGame.putGameOverInMap(points);  default:  System.out.println("输入有误,请重试");  continue;  }  if (snakeLine.move(move) == -1) {  snakeGame.putGameOverInMap(snakeLine.snakePoints.size());  snakeGame.show();  break;  }  snakeGame.putSnakeInMap(snakeLine);  snakeGame.show();  }  }  //用字符画背景  private void initBackground() {  for (int i = 0; i < HEIGHT; i++) { 
   //外围控制行  for (int j = 0; j < WIDTH; j++) { 
   //内循环控制各行的第几个  this.map[i][j] = (j == 0 || (j == WIDTH - 1) || i == 0 || (i == HEIGHT - 1)) ? '*' : ' ';  }  }  }  //显示背景  public void show() {  int height = map.length;  int width = map[0].length;  for (int i = 0; i < height; i++) {  for (int j = 0; j < width; j++) {  System.out.print(map[i][j]);  }  System.out.println();  }  }  //把加到地图  void putSnakeInMap(SnakeLine snakeLine) {  Point p;  this.initBackground();  map[SnakeLine.food.y][SnakeLine.food.x] = SnakeLine.worm;  for (int i = 0; i < snakeLine.snakePoints.size(); i++) {  p = snakeLine.snakePoints.get(i);  if (p.y > 0 && p.y < HEIGHT - 1 && p.x > 0 && p.x < WIDTH - 1) {  map[p.y][p.x] = (i == 0) ? snakeLine.head : snakeLine.body;  } else {  putGameOverInMap(snakeLine.snakePoints.size());  }  }  }  void putGameOverInMap(int points) {  char[] gameOver = ("GameOver Score:"+(points-3)).toCharArray();  for (int i = 0; i < gameOver.length; i++) {  map[HEIGHT / 2 - 1][i + (WIDTH - gameOver.length) / 2] = gameOver[i];  }  show();  System.exit(1);  } } class SnakeLine {  static final int RIGHT = 0, DOWN = 1, LEFT = 2, UP = 3;  static final char head = 'O', body = 'o', worm = '~';//头和身体表示  static Point food = new Point((int) (Math.random() * (SnakeGame.WIDTH - 2)) + 1, (int) (Math.random() * (SnakeGame.HEIGHT - 2)) + 1);  private void newFood() {  food = new Point((int) (Math.random() * (SnakeGame.WIDTH - 2)) + 1, (int) (Math.random() * (SnakeGame
            .HEIGHT - 2)) + 1);  }  LinkedList<Point> snakePoints = new LinkedList<>();//蛇的身体内容  void initSnake() {  Point head = new Point(SnakeGame.WIDTH / 2, SnakeGame.HEIGHT / 2);  snakePoints.addFirst(head);//头  snakePoints.addLast(new Point(head.x - 1, head.y));  snakePoints.addLast(new Point(head.x - 2, head.y));  }  int move(int orient) {  Point p = snakePoints.getFirst();  Point np = null;  switch (orient) {  case SnakeLine.RIGHT:  np = new Point(p.x + 1, p.y);  break;  case SnakeLine.LEFT:  np = new Point(p.x - 1, p.y);  break;  case SnakeLine.DOWN:  np = new Point(p.x, p.y + 1);  break;  case SnakeLine.UP:  np = new Point(p.x, p.y - 1);  break;  }  if (snakePoints.contains(np)) {  return -1;//咬到自己了  }  snakePoints.addFirst(np);  if (np.equals(food)) { 
   //吃到食物了  newFood();  return 2;  }  snakePoints.removeLast();  return 1;  } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197011.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux脚本使用scp自动传输,shell脚本实现scp文件传输

    linux脚本使用scp自动传输,shell脚本实现scp文件传输scp是一个基于ssh的Linux环境下传输文件的好工具,但是使用shell脚本调用scp时会面临一个问题,即scp强制要求通过交互方式输入密码,而不像mysql等拥有-u-p选项。下面有两种方法帮助shell脚本跨过输入密码这个障碍。1.建立机器间完全信任关系假设需要从机器A传输文件至机器B1)在机器A上运行#ssh-keygen-trsa上述命令会在~/.ssh/目录生成私钥证书id_…

    2022年8月22日
  • oracle删除主键索引的sql语句_oracle主键索引和普通索引

    oracle删除主键索引的sql语句_oracle主键索引和普通索引–根据索引名,查询表索引字段select*fromuser_ind_columnswhereindex_name=’索引名’;–根据表名,查询一张表的索引select*fromuser_indexeswheretable_name=’表名’;–根据索引名,查询属于哪张表select*fromall_indexeswhereindex_name=’IN…

    2022年9月5日
  • 0703-APP-Notification-statue-bar

    0703-APP-Notification-statue-bar

    2021年11月23日
  • 什么是TCP粘包?怎么解决这个问题[通俗易懂]

    什么是TCP粘包?怎么解决这个问题[通俗易懂]在socket网络编程中,都是端到端通信,由客户端端口+服务端端口+客户端IP+服务端IP+传输协议组成的五元组可以明确的标识一条连接。在TCP的socket编程中,发送端和接收端都有成对的socket。发送端为了将多个发往接收端的包,更加高效的的发给接收端,于是采用了优化算法(Nagle算法),将多次间隔较小、数据量较小的数据,合并成一个数据量大的数据块,然后进行封包。那么这样一来,接收端就必须…

    2022年8月11日
  • 【算法】java 实现数组的反转

    【算法】java 实现数组的反转数组的反转原理跟冒泡排序有点像,都是通过交换位置,只不过数组的反转是交换第一个和最后一个的位置,第二个和倒数第二个的位置,冒泡排序是交互相邻两个的位置.下面看一下具体的代码实现packagetest;/***数组的反转*/publicclassTestDemo{publicstaticvoidmain(String[]args){…

    2022年5月27日
  • 5.04 toArray()有一个问题须要解决一下

    5.04 toArray()有一个问题须要解决一下

    2021年9月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号