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)
上一篇 2025年9月15日 下午6:43
下一篇 2025年9月15日 下午7:15


相关推荐

  • PHP中用下划线开头的变量含义「建议收藏」

    PHP中用下划线开头的变量含义

    2022年2月8日
    48
  • 无线局域网标准

    无线局域网标准802 11 无线局域网是一个 IEEE 标准 定义使用不需要许可的工业 科学和医疗 Industrial Scientific Medial 简称 ISM 频段的无线电频率如何被用于无线链路物理层和 MAC 子层 当 802 11 首次发布时 规定了在 2 4GHz Hz 是频率单位 频率用于测量波和交流电在 1 秒钟内的状态变化数或周期数 可以通过空气发送和接收各种波 频段进行 1 2Mb s 的数据传输速率 当时有

    2026年2月18日
    2
  • foreach 和 for 循环的区别

    foreach 和 for 循环的区别1 如果只是遍历集合或者数组 用 foreach 好些 快些 2 如果对集合中的值进行修改 就要用 for 循环了 其实 foreach 的内部原理其实也是 Iterator 但它不能像 Iterator 一样可以人为的控制 而且也不能调用 iterator remove 更不能使用下标来访问每个元素 所以不能用于增加 删除等复杂的操作

    2026年3月19日
    2
  • JQuery Div scrollTop ScrollHeight

    JQuery Div scrollTop ScrollHeightjQuery里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中scrollHeight属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。我们现在只探讨和垂直滚动有关的scrollTop、scrollHeight属性。一、滚动条有关属性的正确理解:假设有以下Html代码:

    2022年7月23日
    7
  • django pycharm_pycharm调试django

    django pycharm_pycharm调试django前言:主要是在开发过程中一些采坑和记录,整理一下资料以防自己以后忘了,也为正在初学或者还未特别熟练使用django的同学能够避开这些,且能够系统性的学习django的使用,这里就不写目录了按照我自己的开发顺序来,大家看到专栏里面的文章顺序就是我的目录了,在本专栏里的代码争取让大家拿到就能用,做一个伸手党,网上好多代码不知道是版本原因还是其他简直是无语,不能用还一堆bug。…

    2022年8月28日
    3
  • flask中数据库迁移

    flask中数据库迁移flask 中数据库迁移 1 在 flask 开发过程中 需要修改数据库模型 而且还要在修改之后更新数据库 最直接的方式就是删除旧表 但这样会丢失数据 2 更好的解决办法是使用数据迁移框架 他可以追踪数据库模式的变化 然后把变动应用到数据库中 3 在 Flask 中可以使用 flask migrate 扩展 来实现数据迁移 并且集成到 flask scrpit 中 所有操作通过命令就能完成 4 为导出数据库迁移命令 flask migrate 提供一个 migrateComma 类 可以附加到 flask script 的 m

    2026年3月26日
    2

发表回复

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

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