在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Java游戏开发 → Java 贪吃蛇 示例源码下载

Java 贪吃蛇 示例源码下载

Java游戏开发

下载此实例
  • 开发语言:Java
  • 实例大小:3.22KB
  • 下载次数:41
  • 浏览次数:511
  • 发布时间:2014-11-12
  • 实例类别:Java游戏开发
  • 发 布 人:思雨洛阳
  • 文件格式:.java
  • 所需积分:2
 相关标签: java

实例介绍

【实例简介】利用Java语言编写的贪吃蛇
【实例截图】

【核心代码】


package firstBag;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;

import ListenerBag.Listener;
import ToolsBag.tools;

public class Snack {
	
	public static  final int UP=-1;
	public static  final int DOWN=1;
	public static  final int LEFT=2;
	public static  final int RIGHT=-2;
	private int oldDirection,newDirection;
	private Point tail;
	private boolean life;
	private LinkedList<Point> body=new LinkedList<Point>();
	private Set<Listener> listeners = new HashSet<Listener>(); //注册多个事件监听器
	public Snack(){                                 //实现蛇的初始化
		init();                           //初始化方法
	}
	public void init(){
		int x=tools.WIDTH/2;
		int y=tools.HEIGHT/2;
		for(int i=0;i<2;i  ){              //初始化蛇的身体大小
			body.addLast(new Point(x--,y));
		}
		oldDirection=newDirection=RIGHT;
		life=true;
	}
	public void Move(){             //蛇的移动方法
		System.out.println("snack's Move");
		if(!(oldDirection newDirection == 0)){
			oldDirection=newDirection;
		}
		tail=body.removeLast();      //1.去尾
		int x=body.getFirst().x;
		int y=body.getFirst().y;
		switch(oldDirection){
		case UP:
			y--;
			if(y<0){
				y=tools.HEIGHT-1;
			}
			break;
		case DOWN:
			y  ; 
			if(y>=tools.HEIGHT){
				y=0;
			}
			break;
		case LEFT:
			x--;  
			if(x<0){
				x=tools.WIDTH-1;
			}
			break;
		case RIGHT:
			x  ; 
			if(x>=tools.WIDTH){
				x=0;
			}
			break;
		}
		Point Newhead=new Point(x,y);       //新的蛇头坐标
		body.addFirst(Newhead);          //将新的蛇头坐标加上实现加头
	} 
	
	public void Changedirection(int direction){               //蛇的改变方向方法
		System.out.println("changed direction");
			newDirection=direction;
	}
	
	public void EatFood(){                         //蛇吃食物的方法
		System.out.println("eat food");              
		body.addLast(tail);                //蛇吃到食物后将上面移动是去掉的尾巴重新加在蛇身体后面
	}
	
	public boolean Iseatbody(){                     //判断蛇是否吃到自己的身体
		System.out.println("shi fou chidaozijide shenti  ");
		for(int i=1;i<body.size();i  ){
			if(body.get(i).equals(this.getHead())){
				return true;
			}
		}
		return false;
	}
	
	public void  over(){               //结束游戏
		life=false;
	}
	
	public void Draw(Graphics g){                //将蛇的所有属性显示在屏幕上
		System.out.println("snack xianshi ");
		g.setColor(Color.RED);
		for(Point p:body){
			g.fill3DRect(p.x*tools.CELL_SIZE, p.y*tools.CELL_SIZE
					, tools.CELL_SIZE, tools.CELL_SIZE, true);
		}
	}
	public Point getHead(){
		return body.getFirst();
	}
	private class Snackfreemove implements Runnable{   //通过写一个内部类实现蛇的自动游走
		public void run() {
			// TODO Auto-generated method stub
			while(life)
			{
				Move();
				for(Listener L : listeners){
					L.snackmove(Snack.this);
			     }
			try  {
					Thread.sleep(200);
				 } catch (Exception e) {
					e.printStackTrace();
				    }
			}
		}
	}
		public void start(){
			new Thread(new Snackfreemove()).start();
		}
		
		public void addListener(Listener L){
			if(L !=null)
				this.listeners.add(L);
		}
	}


标签: java

实例下载地址

Java 贪吃蛇 示例源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警