zoukankan      html  css  js  c++  java
  • java 简单贪吃蛇

    1. [代码]java 简单程序     跳至 [1] [全屏预览]
    package com.snake;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    public class SnakeGame extends JFrame implements KeyListener{

    private int stat=1,direction=0,bodylen=6,headx=7,heady=8,
    tailx=1,taily=8,tail,foodx,foody,food;//初始化定义变量
    public final int EAST=1,WEST=2,SOUTH=3,NORTH=4;//方向常量
    int [][] fillblock=new int [20][20];//定义蛇身所占位置
    public SnakeGame() {//构造函数 
    super("贪吃蛇");
    setSize(510,510);
    setLocationRelativeTo(null);
    setVisible(true);//设定窗口属性
    addKeyListener(this);//添加监听
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    for(int i=1;i<=7;i++) fillblock[i][8]=EAST;//初始化蛇身属性   
    direction=EAST;//方向初始化的设置
    FoodLocate(); //定位食物  
    while (stat==1){
    fillblock[headx][heady]=direction;   
    switch(direction)
    {
     case 1:headx++;break;
     case 2:headx--;break;      
     case 3:heady++;break;
     case 4:heady--;break;  
    }//蛇头的前进
    if(heady>19||headx>19||tailx>19||taily>19||heady<0||headx<0||tailx<0||taily<0||fillblock[headx][heady]!=0)
    {   
    stat=0;     
    break;  
    } //判断游戏是否结束
    try
    {
    Thread.sleep(100); 
    }catch(InterruptedException e){}//延迟
    fillblock[headx][heady]=direction;
        if(headx==foodx&&heady==foody)
        {//吃到食物  
     FoodLocate();
     food=2;
     try{  
     Thread.sleep(100); 

     catch(InterruptedException e){}//延迟
    }
        if(food!=0)food--;    
        else{tail=fillblock[tailx][taily];
        fillblock[tailx][taily]=0;//蛇尾的消除  
        switch(tail)
        {
                case 1:tailx++;break; 
                case 2:tailx--;break; 
                case 3:taily++;break;  
                case 4:taily--;break; 
        }//蛇尾的前进
        }          
        repaint(); 
        }css3
    if(stat==0)
     JOptionPane.showMessageDialog(null,"GAME OVER","Game Over",JOptionPane.INFORMATION_MESSAGE);
    }http://www.huiyi8.com/moban/
        public void keyPressed(KeyEvent e)
        {//按键响应
        int keyCode=e.getKeyCode();    
        if(stat==1) switch(keyCode)
        {  
            case KeyEvent.VK_UP:if(direction!=SOUTH) direction=NORTH;break;  
            case KeyEvent.VK_DOWN:if(direction!=NORTH)direction=SOUTH;break;         
            case KeyEvent.VK_LEFT:if(direction!=EAST)direction=WEST;break;    
            case KeyEvent.VK_RIGHT:if (direction!=WEST)direction=EAST;break;        
        }
        }
        public void keyReleased(KeyEvent e){}//空函数
        public void keyTyped(KeyEvent e){} //空函数   
        public void FoodLocate()
        {//定位食物坐标
        do{        
         Random r=new Random();   
         foodx=r.nextInt(20); 
         foody=r.nextInt(20);
          }
        while (fillblock[foodx][foody]!=0);
        }
        public void paint(Graphics g)
        {//画图  
        super.paint(g);
        g.setColor(Color.BLUE);
        for(int i=0;i<20;i++) 
        for(int j=0;j<20;j++)
        if (fillblock[i][j]!=0)
        g.fillRect(25*i+5,25*j+5,24,24);
        g.setColor(Color.RED);
        g.fillRect(foodx*25+5,foody*25+5,24,24);   
        }
        public static void main(String[] args) 
        {//主程序 
        SnakeGame application=new SnakeGame();  
        }
     }

  • 相关阅读:
    Git分支合并:Merge、Rebase的选择
    linux系统下MySQL表名区分大小写问题
    Spring Mvc和Spring Boot读取Profile方式
    Git删除远程分支
    TortoiseGit push免输密码
    git [command line] fatal: Authentication failed for
    Jenkins [Error] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
    FAIL
    WIN下修改host文件并立即生效
    MYSQL 创建数据库SQL
  • 原文地址:https://www.cnblogs.com/xkzy/p/3820545.html
Copyright © 2011-2022 走看看