栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA贪吃蛇(简易版)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA贪吃蛇(简易版)

无贴图,用圈代替头身子食物,极简享受,代码少,内容简单,实战学java首选

//按上下左右控制行动,吃到食物加长一节,同时食物刷新位置。初始长为5,设置maxlength为10,到10不加。
package proj1;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class test1 extends JPanel implements KeyListener{
	int maxsize=10;//身子最长为
	int temsize=5;//初始身子长度
	Random r=new Random();
	int hx=350;//头坐标
	int hy=50;
	int fx = r.nextInt(12)*50+50; //食物坐标
	int fy=r.nextInt(12)*50+50;
	int[] bx={300,250,200,150,100,0,0,0,0,0};//身子坐标
	int[] by={50,50,50,50,50,0,0,0,0,0};
	boolean isStarted=false;
	public static void main(String[] args){
		JFrame j=new JFrame();
		j.setVisible(true);
		j.setSize(800,800);
		test1 t=new test1();
		j.add(t);
		j.addKeyListener(t);//添加键盘监听
	}
	public test1(){
//		this.setFocusable(true);
	}
	public void paintComponent(Graphics g){//每次repaint调用,该画图方法
		super.paintComponent(g);//调用父类方法,不然不能画图
		g.setColor(Color.pink);
		g.setFont(new Font("宋体",Font.BOLD,80));
		g.drawString("length="+temsize, 200,200);
		if(temsize==10){g.drawString("length=10,win", 200,200);}
		g.setColor(Color.red);
		g.drawOval(fx, fy, 50, 50);//画食物
		System.out.print("[repaint,fx,fy="+fx+","+fy+"/");
		System.out.println("hx,hy="+hx+","+hy+"]");
		System.out.println("[temsize="+temsize+"]");
		this.setBackground(Color.black);
		g.setColor(Color.white);
		g.drawOval(hx, hy, 50, 50);//画头
		for(int i=0;i//画身体
			g.drawOval(bx[i], by[i], 50, 50);
		}
		if(hx==fx&&hy==fy){//如果吃到食物身子加长
			g.setColor(Color.pink);
			g.setFont(new Font("宋体",Font.BOLD,40));
			g.drawString("got it", fx, fy);
			fx=r.nextInt(14)*50+50;//食物刷新位置
			fy=r.nextInt(14)*50+50;
			if(temsize
			temsize+=1;
			bx[temsize-1]=bx[temsize-2];
			by[temsize-1]=by[temsize-2];
			}	
		}	
	}
	@Override
	public void keyTyped(KeyEvent e) {}
	public void keyReleased(KeyEvent e) {}
	@Override
	public void keyPressed(KeyEvent e) {//如果按下键盘
	//控制头,b[0]跟着头动,身子以此跟着前一节
	     int Keycode=e.getKeyCode();
			if (Keycode==KeyEvent.VK_SPACE){
				isStarted=!isStarted;
				System.out.println(isStarted);
				repaint();
			}	
			if(Keycode==KeyEvent.VK_UP && hy!=by[0]+50){
				System.out.println("up");
				hy-=50;
				for(int i=0;i
					bx[temsize-i-1]=bx[temsize-i-2];
					by[temsize-i-1]=by[temsize-i-2];
				}
				bx[0]=hx;
				by[0]=hy+50;
			}	
			if(Keycode==KeyEvent.VK_DOWN && hy!=by[0]-50){
				System.out.println("down");
				hy+=50;
				for(int i=0;i
					bx[temsize-i-1]=bx[temsize-i-2];
					by[temsize-i-1]=by[temsize-i-2];
				}
				bx[0]=hx;
				by[0]=hy-50;	
			}
			if(Keycode==KeyEvent.VK_LEFT && hx!=bx[0]+50){
				System.out.println("left");
				hx-=50;
				for(int i=0;i
					bx[temsize-i-1]=bx[temsize-i-2];
					by[temsize-i-1]=by[temsize-i-2];
				}
				bx[0]=hx+50;
				by[0]=hy;
			}
			if(Keycode==KeyEvent.VK_RIGHT && hx!=bx[0]-50){
				System.out.println("right");	
				hx+=50;
				for(int i=0;i
					bx[temsize-i-1]=bx[temsize-i-2];
					by[temsize-i-1]=by[temsize-i-2];
				}
				bx[0]=hx-50;
				by[0]=hy;
			}
			repaint();//重新调用画图方法,相当于刷新
	}
}	
	


		
	
	

 
	
 
	


 



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号