欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)簡(jiǎn)單版貪吃蛇游戲

 更新時(shí)間:2021年09月26日 16:13:53   作者:情念ω  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單版貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)簡(jiǎn)單版貪吃蛇游戲的具體代碼,供大家參考,具體內(nèi)容如下

這是一個(gè)比較簡(jiǎn)潔的小游戲,主要有三個(gè)類,一個(gè)主類,一個(gè)食物類,一個(gè)貪吃蛇類。

1、首先定義主類,主類中主要用來創(chuàng)建窗口

public class Main {
 
 public static final int WIDTH=600;
 public static final int HEIGHT=600;
 public static void main(String[] args) {
  JFrame win =new JFrame();
  win.setVisible(true);
  win.setSize(WIDTH, HEIGHT);
  win.setDefaultCloseOperation(3);
  win.setLocationRelativeTo(null);
  
  SnakePanel panle =new SnakePanel();
  win.add(panle);
  SnakePanel.Key l = panle.new Key();
  win.addKeyListener(l);
  panle.addKeyListener(l);
  panle.run();
 }

}

2、其次是定義食物類,食物有長(zhǎng)和寬,還有在窗口中的位置

import java.util.Random;
public class Cell {
 protected int x;
 protected int y;
 protected int width;
 protected int height;
 Random ran=new Random();
 public Cell(){
  Random ran=new Random();
  this.x=ran.nextInt(25)*15+60;
  this.y=ran.nextInt(25)*15+50;
  this.width=15;
  this.height=15;
 }
 public Cell(int x,int y){
  this();
  this.x=x;
  this.y=y;
 }
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 public int getWidth() {
  return width;
 }
 public void setWidth(int width) {
  this.width = width;
 }
 public int getHeight() {
  return height;
 }
 public void setHeight(int height) {
  this.height = height;
 }
}

3、最后是蛇類

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
public class SnakePanel extends JPanel {
 final int RIGHT=1;
 final int LEFT=2;
 final int UP=3;
 final int DOWN=4;
 int moved=1;
 Cell food;
 Cell[] snake;
 public SnakePanel(){
  food=new Cell();
  snake=new Cell[5];
  for(int i=0;i<snake.length;i++){
   snake[i]=new Cell(210+i*15,50);
  }
 }
 class Key extends KeyAdapter{
  @Override
  public void keyPressed(KeyEvent e){
   int code=e.getKeyCode();
   //System.out.println(code);
   if(code==37&&moved!=RIGHT){
    moved=LEFT;
   }
   if(code==39&&moved!=LEFT){
    moved=RIGHT;
   }
   if(code==38&&moved!=DOWN){
    moved=UP;
   }
   if(code==40&&moved!=UP){
    moved=DOWN;
   }
  }
 }
 public void paint(Graphics g){
  super.paint(g);
  g.setFont(new Font(Font.SERIF,Font.BOLD,28));
  g.drawRect(60, 50, 450, 450);
  for(int i=15;i<=450;i+=15){
   g.drawLine(60+i, 50, 60+i, 500);
  }
  for(int i=15;i<=450;i+=15){
   g.drawLine(60, 50+i, 510, 50+i);
  }
  g.setColor(Color.BLUE);
  g.drawString("歡迎來到貪吃蛇大戰(zhàn)", 140, 40);
  g.fillRect(food.x, food.y, food.width, food.height);
  for(int i=0;i<snake.length;i++){
   g.fillRect(snake[i].x, snake[i].y, snake[i].width, snake[i].height);
  }
 }
 int speed = 250;
 public void run(){
  Timer timer=new Timer();
  TimerTask task=new TimerTask(){
   @Override
   public void run() {
    step();
    repaint();
   }
  }; 
  if(snake.length>=10){
   speed=125;
  }else if(snake.length>=20){
   speed=60;
  }else if(snake.length>=30){
   speed=30;
  }else if(snake.length>=40){
   speed=15;                                             
  }
  timer.schedule(task, 1000, speed);
 }
 public void step(){
  for(int i=1;i<snake.length;i++){
   snake[i-1] = snake[i]; 
  }
  Cell c = new Cell(snake[snake.length-1].getX(),snake[snake.length-1].getY());
  if(moved == RIGHT){
   c.setX(c.getX()+15);
  }
  if(moved == UP){
   c.setY(c.getY()-15);
  }
  if(moved == DOWN){
   c.setY(c.getY()+15);
  }
  if(moved == LEFT){
   c.setX(c.getX()-15);
  }
  snake[snake.length-1] = c;
  //System.out.println(c.getX()+","+c.getY());
  if(snake[snake.length-1].getX()>510||
    snake[snake.length-1].getX()<60||
    snake[snake.length-1].getY()>500||
    snake[snake.length-1].getY()<50){
     System.exit(0);
    }
  if(snake[snake.length-1].x==food.x &&snake[snake.length-1].y==food.y){
   snake=Arrays.copyOf(snake,snake.length+1);
   snake[snake.length-1]=food;
   food=new Cell();
  } 
 }
}

至此,一個(gè)簡(jiǎn)單的貪吃蛇小游戲就完成了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA中SSM框架的搭建實(shí)現(xiàn)CRUD的方法

    JAVA中SSM框架的搭建實(shí)現(xiàn)CRUD的方法

    這篇文章主要介紹了JAVA中SSM框架的搭建實(shí)現(xiàn)CRUD的方法,小編把運(yùn)行代碼列了出來,供大家參考。
    2017-11-11
  • jmeter壓力測(cè)試工具簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    jmeter壓力測(cè)試工具簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了jmeter壓力測(cè)試工具相關(guān)介紹資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JavaWeb建立簡(jiǎn)單三層項(xiàng)目步驟圖解

    JavaWeb建立簡(jiǎn)單三層項(xiàng)目步驟圖解

    這篇文章主要介紹了JavaWeb建立簡(jiǎn)單三層項(xiàng)目步驟圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Spring MVC 攔截器實(shí)現(xiàn)登錄

    Spring MVC 攔截器實(shí)現(xiàn)登錄

    這篇文章主要介紹了Spring MVC 攔截器實(shí)現(xiàn)登錄,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 使用代碼生成器自定義Entity的部分注解

    使用代碼生成器自定義Entity的部分注解

    這篇文章主要介紹了使用代碼生成器自定義Entity的部分注解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 5分鐘快速了解String.trim()到底做了什么事

    5分鐘快速了解String.trim()到底做了什么事

    trim方法一般用來去除空格,但是根據(jù)JDK API的說明,該方法并不僅僅是去除空格,它能夠去除從編碼'\u0000'至'\u0020'的所有字符,這篇文章主要給大家介紹了如何通過5分鐘快速了解String.trim()到底做了什么事,需要的朋友可以參考下
    2021-11-11
  • java讀取文件:char的ASCII碼值=65279,顯示是一個(gè)空字符的解決

    java讀取文件:char的ASCII碼值=65279,顯示是一個(gè)空字符的解決

    這篇文章主要介紹了java讀取文件:char的ASCII碼值=65279,顯示是一個(gè)空字符的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • spring的IoC和DI詳解

    spring的IoC和DI詳解

    這篇文章主要介紹了spring的IoC和DI詳解,還是挺不錯(cuò)的,這里分享給加,需要的朋友可以參考下。
    2017-11-11
  • Java 8新時(shí)間日期庫(kù)java.time的使用示例

    Java 8新時(shí)間日期庫(kù)java.time的使用示例

    這篇文章主要給你大家介紹了關(guān)于Java 8新時(shí)間日期庫(kù)java.time的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringSecurity實(shí)現(xiàn)訪問控制url匹配

    SpringSecurity實(shí)現(xiàn)訪問控制url匹配

    本文主要介紹了SpringSecurity實(shí)現(xiàn)訪問控制url匹配,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論