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

📄 tcs.java

📁 自己写的一个J2ME贪吃蛇的源代码
💻 JAVA
字号:


import java.io.IOException;
import java.util.*;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class tcs extends Canvas implements Runnable {
	Image ds, dx, dz, dy, ws, wx, wz, wy, shenti, shiwu, dituge, tou, wei;
	// 建立画布,画笔
	Image offScreen;
	Graphics offG;
	int wanjia[][] = new int[12][4];
	// 玩家 状态数组
	int chide[][] = new int[8][3];
	int keyV = -1;
	int sdu = 0;
	int ss = 0;

	// 食物 状态数组

	public tcs() {
		// TODO Auto-generated constructor stub
		offScreen = Image.createImage(getWidth(), getHeight());
		offG = offScreen.getGraphics();
		// 给第1个食物初始数值
		chide[0][0] = 1;
		chide[0][1] = 80;
		chide[0][2] = 80;

		// 给玩家初始 数值
		for (int i = 0; i < 4; i++) {
			wanjia[i][0] = 1;
			wanjia[i][1] = 20;
			wanjia[i][2] = 150 + i * 10;
			wanjia[i][3] = 1;
		}
		// 给图片 赋值
		try {
			ds = Image.createImage("/ds.png");
			dx = Image.createImage("/dx.png");
			dz = Image.createImage("/dz.png");
			dy = Image.createImage("/dy.png");
			ws = Image.createImage("/ws.png");
			wx = Image.createImage("/wx.png");
			wz = Image.createImage("/wz.png");
			wy = Image.createImage("/wy.png");
			shenti = Image.createImage("/shenti.png");
			shiwu = Image.createImage("/shiwu.png");
			dituge = Image.createImage("/ditu.png");

		} catch (IOException e) {
			e.printStackTrace();
		}
		// 调用画出地图的方法
		Thread t = new Thread(this);
		t.start();
		// paintOffScreen();
		// shemove(keyV);
	}

	// 画地图的方法
	public void paintOffScreen() {
		for (int i = 0; i < 15; i++) {
			for (int j = 0; j < 20; j++) {
				offG.setClip(i * 10, j * 10, 10, 10);
				offG.drawImage(dituge, i * 10, j * 10, 0);
			}
		}
	}

	protected void paint(Graphics g) {
		g.drawImage(offScreen, 0, 0, 0);
		if (ss == 0) {
			g.drawImage(ds, wanjia[0][1], wanjia[0][2], 0);
			ss = 1;
		}

		if (wanjia[0][3] == -1) {
			g.drawImage(ds, wanjia[0][1], wanjia[0][2], 0);
		}
		if (wanjia[0][3] == -2) {
			g.drawImage(dx, wanjia[0][1], wanjia[0][2], 0);
		}
		if (wanjia[0][3] == -3) {
			g.drawImage(dz, wanjia[0][1], wanjia[0][2], 0);
		}
		if (wanjia[0][3] == -4) {
			g.drawImage(dy, wanjia[0][1], wanjia[0][2], 0);
		}

		// g.drawImage(ds, wanjia[0][1], wanjia[0][2], 0);
		g.drawImage(shenti, wanjia[1][1], wanjia[1][2], 0);
		g.drawImage(shenti, wanjia[2][1], wanjia[2][2], 0);
		for (int i = wanjia.length - 1; i >= 0; i--) {
			if (wanjia[i][0] == 1) {
				if (wanjia[i][1] == wanjia[i - 1][1]) {
					if (wanjia[i][2] > wanjia[i - 1][2]) {
						g.drawImage(wx, wanjia[i][1], wanjia[i][2], 0);
						break;
					}
					if (wanjia[i][2] < wanjia[i - 1][2]) {
						g.drawImage(ws, wanjia[i][1], wanjia[i][2] + 5, 0);
						break;
					}
				}
				if (wanjia[i][2] == wanjia[i - 1][2]) {
					if (wanjia[i][1] > wanjia[i - 1][1]) {
						g.drawImage(wy, wanjia[i][1], wanjia[i][2], 0);
						break;
					}
					if (wanjia[i][1] < wanjia[i - 1][1]) {
						g.drawImage(wz, wanjia[i][1] + 5, wanjia[i][2], 0);
						break;
					}
				}
			}
		}

		// g.drawImage(wei, wanjia[3][1], wanjia[3][2], 0);
		g.drawImage(shiwu, chide[0][1], chide[0][2], 0);

	}

	// 食物随机出现

	public boolean startshiwu(boolean ii) {
		if (ii == false) {
			Random i = new Random();
			Random j = new Random();
			chide[0][1] = i.nextInt(15) * 10;
			chide[0][2] = j.nextInt(20) * 10;
			for (int l = 0; l < wanjia.length; l++) {
				if (wanjia[l][0] == 1) {
					if (wanjia[l][1] == chide[0][1]
							&& wanjia[l][2] == chide[0][2]) {
						return false;

					}
				}
			}
		}
		return true;
	}

	// 
	public void keyPressed(int keyCode) {
		keyV = keyCode;
	}

	//
	// public void keyReleased(int keyCode) {
	// keyV = 0;
	// }

	// 蛇的移动
	public void shemove(int key) {

		switch (key) {
		case -1:
		case 50:
			for (int i = wanjia.length - 1; i >= 0; i--) {
				if (wanjia[i][0] == 1) {
					if (i != 0) {
						wanjia[i][1] = wanjia[i - 1][1];
						wanjia[i][2] = wanjia[i - 1][2];
					} else {
						wanjia[0][2] -= 10;
						wanjia[0][3] = -1;
					}
				}
			}
			
			break;
		case -2:
		case 56:
			for (int i = wanjia.length - 1; i >= 0; i--) {
				if (wanjia[i][0] == 1) {
					if (i != 0) {
						wanjia[i][1] = wanjia[i - 1][1];
						wanjia[i][2] = wanjia[i - 1][2];
					} else {
						wanjia[0][2] += 10;
						wanjia[0][3] = -2;
					}
				}
			}
			break;
		case -3:
		case 52:
			for (int i = wanjia.length - 1; i >= 0; i--) {
				if (wanjia[i][0] == 1) {
					if (i != 0) {
						wanjia[i][1] = wanjia[i - 1][1];
						wanjia[i][2] = wanjia[i - 1][2];
					} else {
						wanjia[0][1] -= 10;
						wanjia[0][3] = -3;
					}
				}
			}
			break;
		case -4:
		case 54:
			for (int i = wanjia.length - 1; i >= 0; i--) {
				if (wanjia[i][0] == 1) {
					if (i != 0) {
						wanjia[i][1] = wanjia[i - 1][1];
						wanjia[i][2] = wanjia[i - 1][2];
					} else {
						wanjia[0][1] += 10;
						wanjia[0][3] = -4;
					}
				}
			}
			break;
		}
	}
	public void anjianxianzhi(){
		switch (keyV){
		case -1:
		case 50:
		   
		break;
		case -2:
		case 56:
			   
			break;
		case -3:
		case 52:
			   
			break;
		case -4:
		case 54:
			   
			break;
		}
	}
//蛇遇到食物
	public void toukissshiwu() {
		for (int l = 0; l < chide.length; l++) {
			if (chide[l][0] == 1) {
				if (wanjia[0][2] == chide[l][2]) {
					if (wanjia[0][1] + 10 == chide[l][1] && keyV == -4) {
						for (int i = wanjia.length - 1; i >= 0; i--) {
							if (wanjia[i][0] == 1) {
								wanjia[i + 1] = wanjia[i];
								wanjia[0] = chide[l];
								System.out.print(wanjia[0]);
							}
						}
					}
					if (wanjia[0][1] - 10 == chide[l][1] && keyV == -3) {
						for (int i = wanjia.length - 1; i >= 0; i--) {
							if (wanjia[i][0] == 1) {
								wanjia[i + 1] = wanjia[i];
								wanjia[0] = chide[l];
								System.out.print(wanjia[0]);
							}
						}
					}
				}
				
				if (wanjia[0][1] == chide[l][1]){
					if (wanjia[0][2] - 10 == chide[l][2] && keyV == -1) {
						for (int i = wanjia.length - 1; i >= 0; i--) {
							if (wanjia[i][0] == 1) {
								wanjia[i + 1] = wanjia[i];
								wanjia[0] = chide[l];
								System.out.print(wanjia[0]);
							}
						}
					}
					if (wanjia[0][2] + 10 == chide[l][2] && keyV == -2) {
						for (int i = wanjia.length - 1; i >= 0; i--) {
							if (wanjia[i][0] == 1) {
								wanjia[i + 1] = wanjia[i];
								wanjia[0] = chide[l];
								System.out.print(wanjia[0]);
							}
						}
					}
				}
			}
		break;
		}
	}

	public void run() {
		while (true) {
			try {
				Thread.sleep(400 - sdu);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			paintOffScreen();
			toukissshiwu();
			shemove(keyV);
			repaint();
		}
	}

}

⌨️ 快捷键说明

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