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

📄 snake.java

📁 java课程的资料以及实验的代码
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.math.*;

public class Snake
{
	int[] x,y;
	int num=0;
	int rx,ry;
	Snake()
	{
		x = new int[1000];
		y = new int[1000];
	}
	void add(int a,int b)
	{
		x[num] = a;
		y[num] = b;	
		num++;
	}
	void setrpoint()
	{
		
		rx = (int)(Math.random () * 100);
		ry = (int)(Math.random () * 100);
		rx = rx % 60 * 10;
		ry = ry % 45 * 10 ;
		for (int i=0;i<num;i++)
		{
			if (x[i] == rx && y[i] == ry)
			{
				setrpoint();		
			}
		}
	}
	public static void main(String args[])
	{
		MyFrame myframe;
		myframe = new MyFrame();
	}	
}

class MyFrame extends Frame 
{
	MyPanel pan;
	
	Snake sn;
	Move t;
	FrameAdapter frmListener;
	AppAdapter AppListener;
	MyFrame()
	{
		setLocation(100,80);
		setSize(606,475);
		setLayout(new BorderLayout());
		this.setBackground (Color.yellow);
		this.setResizable (false);
		pan = new MyPanel();	
		this.add (pan);
		
		
		sn = new Snake();
		for(int i=0;i<500;i++)
			sn.add (100,100);
		sn.setrpoint ();
		this.setVisible (true);
	
		//pan.repaint ();
		t = new Move();
		t.start ();
				
		frmListener = new FrameAdapter();
		AppListener = new AppAdapter();
		this.addKeyListener(frmListener);
		this.addWindowListener(AppListener);
	}
	class MyPanel extends Panel
	{
		public void paint(Graphics g)
		{
			int i;
			g.setColor (Color.blue);
			for (i=0;i<sn.num;i++)
				g.fillOval (sn.x[i],sn.y[i],10,10);
			g.setColor (Color.red);
			g.fill3DRect (sn.rx,sn.ry,10,10,true);
		}
	}
	class Move extends Thread
	{
		public int way = 39;
		int lx,ly,tx,ty;
		int i;
		public void run()
		{
			try
			{
				this.sleep (500);
			}
			catch(InterruptedException e)
			{
				System.out.println(e.getMessage ());
			}
			if ((way<37||way>40) && way != 3738 && way != 3740 && way != 3938 && way != 3940)
				run();			
			lx=sn.x[sn.num-1];
			ly=sn.y[sn.num-1];
			for (i=sn.num-1;i>0;i--)
			{
				sn.x[i]=sn.x[i-1];
				sn.y[i]=sn.y[i-1];
			}			
			switch(way)
			{
				case 39:sn.x[0]+=10;break;
				case 37:sn.x[0]-=10;break;
				case 40:sn.y[0]+=10;break;
				case 38:sn.y[0]-=10;break;
				case 3738: sn.x[0]-=10;sn.y[0]-=10;break;
				case 3740: sn.x[0]-=10;sn.y[0]+=10;break;
				case 3938: sn.x[0]+=10;sn.y[0]-=10;break;
				case 3940: sn.x[0]+=10;sn.y[0]+=10;break;				
			}
			if (sn.x[0]==600)
				sn.x[0]=0;
			if (sn.x[0]==-10)
				sn.x[0]=590;
			if (sn.y[0]==450)
				sn.y[0]=0;
			if (sn.y[0]==-10)
				sn.y[0]=440;
			if (sn.x[0] == sn.rx && sn.y[0]==sn.ry)
			{
				sn.add (lx,ly);
				sn.setrpoint ();
				pan.repaint(sn.rx,sn.ry,10,10);
			}
			else
				pan.repaint(lx,ly,10,10);
			pan.repaint(sn.x[0],sn.y[0],10,10);
			run();
		}
	} 
	class FrameAdapter extends KeyAdapter
	{
		boolean left,right,up,down;
		FrameAdapter()
		{
			left=right=up=down=false;
		}
		public void keyPressed(KeyEvent ke)
		{
			if 	(ke.getKeyCode () == 37)
				left=true;
			if 	(ke.getKeyCode () == 38)
				up=true;
			if 	(ke.getKeyCode () == 39)
				right=true;
			if 	(ke.getKeyCode () == 40)
				down=true;
			if (left&&!right&&up&&!down)
				t.way = 3738;
			else if (left&&!right&&!up&&down)
				t.way = 3740;
			else if (!left&&right&&up&&!down)
				t.way = 3938;
			else if (!left&&right&&!up&&down)
				t.way = 3940;
			else			
				t.way=ke.getKeyCode ();
		}
		public void keyReleased(KeyEvent ke)
		{
			if 	(ke.getKeyCode () == 37)
				left=false;
			if 	(ke.getKeyCode () == 38)
				up=false;
			if 	(ke.getKeyCode () == 39)
				right=false;
			if 	(ke.getKeyCode () == 40)
				down=false;
			//System.out.println(ke.getKeyCode());
			
		}
	}
}

class AppAdapter extends WindowAdapter
{
	public void windowClosing(WindowEvent e)
	{
		System.exit(0);
	}
}

⌨️ 快捷键说明

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