⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snake.java

📁 Java贪吃蛇游戏 原代码和.jar文件 Java贪吃蛇游戏
💻 JAVA
字号:
package snakegame;

import java.awt.*;
import java.util.*;
import java.awt.geom.*;

public class Snake implements Data
{
	public Snake()
	{
		array.add(new Point(10, 10));
		array.add(new Point(10, 11));
		array.add(new Point(10, 12));
		array.add(new Point(10, 13));
		array.add(new Point(10, 14));
		
		currentFlag = UPFLAG;
		lifeFlag = true;
	}
	
	public void move()
	{
		tair = (Point)array.get(array.size() - 1);
		
		int len = array.size() - 2;
		for(int i = len; i >= 0; i--)
		{
			Point leftPoint = (Point)array.get(i);
			Point rightPoint = (Point)array.get(i + 1);
			rightPoint.x = leftPoint.x;
			rightPoint.y = leftPoint.y;
			
		}
	}
	
	public void moveHeadLeft()
	{
		
		if(currentFlag == RIGHTFLAG || currentFlag == LEFTFLAG)
		{
			return;
		}
		
		move();
		
		Point point = (Point)(array.get(0));	
		
		point.x = point.x - 1;
		point.y = point.y;	
		
		if(point.x < LEFT)
		{
			lifeFlag = false;
		}
		
		
		currentFlag = LEFTFLAG;
	}
	
	public void moveHeadRight()
	{
		if(currentFlag == LEFTFLAG || currentFlag == RIGHTFLAG)
		{
			return;
		}
		
		move();
		
		Point point = (Point)(array.get(0));
		
		point.x = point.x + 1;
		point.y = point.y;	
		
		if(point.x > RIGHT)
		{
			lifeFlag = false;
		}
		
		currentFlag = RIGHTFLAG;
	}
	
	public void moveHeadUp()
	{
		if(currentFlag == DOWNFLAG || currentFlag == UPFLAG)
		{
			return;
		}
		
		move();
		
		Point point = (Point)(array.get(0));
		
		point.x = point.x;
		point.y = point.y - 1;
		
		if(point.y < UP)
		{
			lifeFlag = false;
		}
		
		currentFlag = UPFLAG;
	}
	
	public void moveHeadDown()
	{
		if(currentFlag == UPFLAG || currentFlag == DOWNFLAG)
		{
			return;
		}
		
		move();
		
		Point point = (Point)(array.get(0));
		
		point.x = point.x;
		point.y = point.y + 1;
		
		if(point.x > DOWN)
		{
			lifeFlag = false;
		}

		currentFlag = DOWNFLAG;
	}
	
	public void draw(Graphics2D g2)
	{
		drawHead(g2);
		drawBody(g2);
		//drawtair(g2);
	}
	
	private void drawHead(Graphics2D g2)
	{
		int x = 0;
		int y = 0;
		Point point = (Point)array.get(0);
	
		point = clientPoint(point);
		x = point.x;
		y = point.y;
		
		int clientX[] = new int[3];
		int clientY[] = new int[3];
		
		
		switch(currentFlag)
		{
			case RIGHTFLAG:
				clientX[0] = x;
				clientY[0] = y;
				clientX[1] = x + LONG;
				clientY[1] = y + LONG / 2;
				clientX[2] = x;
				clientY[2] = y + LONG; 
				break;
				
			case DOWNFLAG:
				clientX[0] = x;
				clientY[0] = y;
				clientX[1] = x + LONG;
				clientY[1] = y;
				clientX[2] = x + LONG / 2;
				clientY[2] = y + LONG; 
				break;
				
			case LEFTFLAG:
				clientX[0] = x;
				clientY[0] = y + LONG / 2;
				clientX[1] = x + LONG;
				clientY[1] = y;
				clientX[2] = x + LONG;
				clientY[2] = y + LONG; 
				break;
				
			case UPFLAG:
				clientX[0] = x + LONG / 2;
				clientY[0] = y;
				clientX[1] = x + LONG;
				clientY[1] = y + LONG;
				clientX[2] = x;
				clientY[2] = y + LONG; 
				break;
				
			default:
				break;
		}
		
		Polygon polygon = new Polygon(clientX, clientY, clientX.length);
		g2.setColor(Color.RED);
		g2.fill(polygon);
		g2.setColor(Color.BLACK);
		g2.draw(polygon);
	}
	
	private void drawBody(Graphics2D g2)
	{
		for(int i = 1; i < array.size(); i++)
		{
			Point point = (Point)(array.get(i));
			point = clientPoint(point); 
			Rectangle2D.Double rect = new Rectangle2D.Double(point.x, point.y, LONG, LONG);
			g2.setColor(Color.GREEN);
			g2.fill(rect);
			g2.setColor(Color.BLACK);
			g2.draw(rect);
		}
	}
	
	private void drawtair(Graphics2D g2)
	{
		
	}
	
	public boolean isLife()
	{
		return lifeFlag;
	}
	
	public void addNode()
	{
		array.add(new Point(tair.x, tair.y));
	}
	
	public Point clientPoint(int x, int y)
	{
		int clientX = ACTUALLEFT + x * LONG;
		int clientY = ACTUALUP + y * LONG;
		
		return new Point(clientX, clientY);
	}
	
	public Point clientPoint(Point point)
	{
		return clientPoint(point.x, point.y);
	}
	
	public void moveRight()
	{
		tair = (Point)array.get(array.size() - 1);
		Point point = (Point)array.get(0);
		int tempX = point.x + 1;
		int tempY = point.y;
		boolean flag = false;
		
		for(int i = 1; i < array.size(); i++)
		{
			Point tempPoint = (Point)array.get(i);
			if(tempX == tempPoint.x && tempY == tempPoint.y)
			{
				flag = true;
				break;
			}
			
		}
		if(tempX <= RIGHT && !flag)
		{
			for(int i = array.size() - 1; i > 0; i--)
			{
				Point point1 = (Point)(array.get(i - 1));
				Point point2 = (Point)(array.get(i));
				point2.x = point1.x;
				point2.y = point1.y;
			}
			
			point.x = tempX;
		}
		else
		{
			lifeFlag = false;
		}
	}
	
	public void moveDown()
	{
		tair = (Point)array.get(array.size() - 1);
		Point point = (Point)array.get(0);
		int tempX = point.x;
		int tempY = point.y + 1;
		boolean flag = false;
		
		for(int i = 1; i < array.size(); i++)
		{
			Point tempPoint = (Point)array.get(i);
			if(tempX == tempPoint.x && tempY == tempPoint.y)
			{
				flag = true;
				break;
			}
			
		}
		if(tempY <= RIGHT && !flag)
		{
			for(int i = array.size() - 1; i > 0; i--)
			{
				Point point1 = (Point)(array.get(i - 1));
				Point point2 = (Point)(array.get(i));
				point2.x = point1.x;
				point2.y = point1.y;
			}
			
			point.y = tempY;
		}
		else
		{
			lifeFlag = false;
		}
	}
	
	public void moveLeft()
	{
		tair = (Point)array.get(array.size() - 1);
		Point point = (Point)array.get(0);
		int tempX = point.x - 1;
		int tempY = point.y;
		boolean flag = false;
		
		for(int i = 1; i < array.size(); i++)
		{
			Point tempPoint = (Point)array.get(i);
			if(tempX == tempPoint.x && tempY == tempPoint.y)
			{
				flag = true;
				break;
			}
			
		}
		
		if(tempX >= LEFT && !flag)
		{
			
			for(int i = array.size() - 1; i > 0; i--)
			{
				Point point1 = (Point)(array.get(i - 1));
				Point point2 = (Point)(array.get(i));
				point2.x = point1.x;
				point2.y = point1.y;
			}
			
			point.x = tempX;
		}
		else
		{
			lifeFlag = false;
		}
	}
	
	public void moveUp()
	{
		tair = (Point)array.get(array.size() - 1);
		Point point = (Point)array.get(0);
		int tempX = point.x;
		int tempY = point.y - 1;
		boolean flag = false;
		
		for(int i = 1; i < array.size(); i++)
		{
			Point tempPoint = (Point)array.get(i);
			if(tempX == tempPoint.x && tempY == tempPoint.y)
			{
				flag = true;
				break;
			}
			
		}
		
		
		if(tempY >= UP && !flag)
		{
			
			for(int i = array.size() - 1; i > 0; i--)
			{
				Point point1 = (Point)(array.get(i - 1));
				Point point2 = (Point)(array.get(i));
				point2.x = point1.x;
				point2.y = point1.y;
			}
			
			point.y = tempY;
		}
		else
		{
			lifeFlag = false;
		}
	}
	public ArrayList array = new ArrayList();
	public int currentFlag = UPFLAG;
	public Point tair;
	public boolean lifeFlag;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -