急求马士兵贪吃蛇视频!!!! 请问大家谁有马士兵贪吃蛇的视频分享一下啊,小弟刚学java,希望大家多多帮忙~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写的,可以看看package com.scirp.common.util;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.ArrayList;import java.util.List;import java.util.Random;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;public class Anakonda extends JFrame { public static final int ANSKONDA_PART_WIDTH = 8; // 蛇宽 public static final int ANSKONDA_PART_HEIGHT = 8; // 蛇高 public static final int GAME_FACE_WIDTH = ANSKONDA_PART_WIDTH * 30; // 游戏屏宽 public static final int GAME_FACE_HEIGHT = ANSKONDA_PART_WIDTH * 30; // 游戏屏高 private Control control; public Anakonda(String name, Control control) { super(name); this.setSize(GAME_FACE_WIDTH, GAME_FACE_HEIGHT); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.control = control; this.add(control); this.setLocationRelativeTo(null); // 中间显示 this.addKeyListener(new KeyMonitor(control)); this.setVisible(true); } public void launch() { try { while (true) { Thread.sleep(500); this.repaint(); // 重画 control.gameOver(); // 检查挂的方法 } } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { Control control = new Control(); Anakonda anakonda = new Anakonda("Anakonda", control); anakonda.launch(); }}class Control extends JPanel { // 长度 List<Part> parts; Part eatPart; // 预知目标 private Random random; public Control() { initialization(); } // 初始化一个点 public void initialization() { random = new Random(); eatPart = newPart(); parts = new ArrayList<Part>(); parts.add(new Part(Anakonda.ANSKONDA_PART_WIDTH, Anakonda.ANSKONDA_PART_HEIGHT, Guide.down, new Point(112, 0))); } @Override public void paint(Graphics g) { Color c = g.getColor(); g.setColor(Color.RED); eatPart.draw(g); take(); g.setColor(Color.BLUE); // 画蛇 for (int i = 0; i < parts.size(); i++) { Part part = parts.get(i); part.draw(g); } // 前面一个点告诉后面一个点下一次的方向 for (int i = parts.size() - 1; i >= 0; i--) { if ((i - 1) >= 0) { parts.get(i).guide = parts.get(i - 1).guide; } } g.setColor(Color.GRAY); g.drawString("长度 : " + parts.size(), 0, 10); g.setColor(c); } // 随机产生一个被吃的点 规则: 小于宽,必须和蛇的路线一样 public Part newPart() { int x = random.nextInt(Anakonda.GAME_FACE_WIDTH - Anakonda.ANSKONDA_PART_WIDTH); int y = random.nextInt(Anakonda.GAME_FACE_HEIGHT - Anakonda.ANSKONDA_PART_HEIGHT); int xTemp = x % Anakonda.ANSKONDA_PART_WIDTH; int yTemp = y % Anakonda.ANSKONDA_PART_HEIGHT; x = xTemp == 0 ? xTemp : x - xTemp <= 0 ? 0 : x - xTemp; y = yTemp == 0 ? yTemp : y - yTemp <= 0 ? 0 : y - yTemp; System.out.println(" x : " + x + " y : " + y); return new Part(Anakonda.ANSKONDA_PART_WIDTH, Anakonda.ANSKONDA_PART_HEIGHT, Guide.stop, new Point(x, y)); } // 检查是否吃到 随机点 public void take() { if (!parts.get(0).p.equals(eatPart.p)) return; Part part = parts.get(parts.size() - 1); Part newPart = new Part(Anakonda.ANSKONDA_PART_WIDTH, Anakonda.ANSKONDA_PART_HEIGHT, part.guide, (Point) part.p .clone()); switch (newPart.guide) { case up: newPart.p.y += newPart.height; break; case down: newPart.p.y -= newPart.height; break; case left: newPart.p.x += newPart.width; break; case right: newPart.p.x -= newPart.width; break; } parts.add(newPart); eatPart = newPart(); } // 挂的方法 public boolean gameOver() { Part part = parts.get(0); if (part.p.x < 0 || part.p.x > Anakonda.GAME_FACE_WIDTH || part.p.y < 0 || part.p.y > Anakonda.GAME_FACE_HEIGHT) { JOptionPane.showMessageDialog(this, "GAME OVER!", "warning", JOptionPane.OK_OPTION); initialization(); return true; } return false; }}// 小点蛇类class Part { int width; int height; Guide guide = Guide.down; Point p; public Part() { } public Part(int width, int height, Guide guide, Point p) { this.width = width; this.height = height; this.guide = guide; this.p = p; } public void draw(Graphics g) { nextWay(); g.draw3DRect(p.x, p.y, width, height, false); } public void nextWay() { switch (guide) { case up: p.y = p.y - height; break; case down: p.y = p.y + height; break; case left: p.x = p.x - width; break; case right: p.x = p.x + width; break; } }}class KeyMonitor extends KeyAdapter { private Control control; public KeyMonitor(Control control) { this.control = control; } @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_UP: if (control.parts.get(0).guide == Guide.down) return; control.parts.get(0).guide = Guide.up; break; case KeyEvent.VK_DOWN: if (control.parts.get(0).guide == Guide.up) return; control.parts.get(0).guide = Guide.down; break; case KeyEvent.VK_LEFT: if (control.parts.get(0).guide == Guide.right) return; control.parts.get(0).guide = Guide.left; break; case KeyEvent.VK_RIGHT: if (control.parts.get(0).guide == Guide.left) return; control.parts.get(0).guide = Guide.right; break; default: return; } }}enum Guide { up, down, left, right, stop} http://www.verycd.com/topics/93279/楼上的哥哥,说的对。初学者要看一些基础的视频,慢慢的由浅到深这个马士兵老师分享的从基础到高手的视频下载地址,你去看看吧,希望对你有帮助 verycd上没有贪食蛇的游戏视频啊 5楼的大哥,可以传给我贪吃蛇的视频吗?小弟感激不尽啊我邮箱[email protected] 请问哪里有 MDF (Main Distribution Frame) 的接线教程 怎么去除dwr中烦人的log JAVA如何替换 Java开发邮件服务器 输入问题 求大侠帮我给这个c++程序改成java程序 (100分重谢) 请各位高手帮忙解决一下出现这个异常的问题!谢谢! §§§请问哪里有JCreator2.5 PRO的下载啊!~~~~~^^^^ 如何将JAVA应用程序做成可以执行的文件,如JAR或BAT??????????????? 在两个操作系统执行却上得到不同的结果 java 做拼图游戏 用什么算法啊 null==变量跟变量==null区别
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;public class Anakonda extends JFrame {
public static final int ANSKONDA_PART_WIDTH = 8; // 蛇宽
public static final int ANSKONDA_PART_HEIGHT = 8; // 蛇高
public static final int GAME_FACE_WIDTH = ANSKONDA_PART_WIDTH * 30; // 游戏屏宽
public static final int GAME_FACE_HEIGHT = ANSKONDA_PART_WIDTH * 30; // 游戏屏高 private Control control; public Anakonda(String name, Control control) {
super(name);
this.setSize(GAME_FACE_WIDTH, GAME_FACE_HEIGHT);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.control = control;
this.add(control);
this.setLocationRelativeTo(null); // 中间显示
this.addKeyListener(new KeyMonitor(control));
this.setVisible(true);
} public void launch() {
try {
while (true) {
Thread.sleep(500);
this.repaint(); // 重画
control.gameOver(); // 检查挂的方法
}
} catch (InterruptedException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
Control control = new Control();
Anakonda anakonda = new Anakonda("Anakonda", control);
anakonda.launch();
}
}class Control extends JPanel { // 长度
List<Part> parts;
Part eatPart; // 预知目标
private Random random; public Control() {
initialization();
} // 初始化一个点
public void initialization() {
random = new Random();
eatPart = newPart();
parts = new ArrayList<Part>();
parts.add(new Part(Anakonda.ANSKONDA_PART_WIDTH,
Anakonda.ANSKONDA_PART_HEIGHT, Guide.down, new Point(112, 0)));
} @Override
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.RED);
eatPart.draw(g);
take();
g.setColor(Color.BLUE);
// 画蛇
for (int i = 0; i < parts.size(); i++) {
Part part = parts.get(i);
part.draw(g);
}
// 前面一个点告诉后面一个点下一次的方向
for (int i = parts.size() - 1; i >= 0; i--) {
if ((i - 1) >= 0) {
parts.get(i).guide = parts.get(i - 1).guide;
}
}
g.setColor(Color.GRAY);
g.drawString("长度 : " + parts.size(), 0, 10);
g.setColor(c);
} // 随机产生一个被吃的点 规则: 小于宽,必须和蛇的路线一样
public Part newPart() {
int x = random.nextInt(Anakonda.GAME_FACE_WIDTH - Anakonda.ANSKONDA_PART_WIDTH);
int y = random.nextInt(Anakonda.GAME_FACE_HEIGHT - Anakonda.ANSKONDA_PART_HEIGHT);
int xTemp = x % Anakonda.ANSKONDA_PART_WIDTH;
int yTemp = y % Anakonda.ANSKONDA_PART_HEIGHT;
x = xTemp == 0 ? xTemp : x - xTemp <= 0 ? 0 : x - xTemp;
y = yTemp == 0 ? yTemp : y - yTemp <= 0 ? 0 : y - yTemp;
System.out.println(" x : " + x + " y : " + y);
return new Part(Anakonda.ANSKONDA_PART_WIDTH,
Anakonda.ANSKONDA_PART_HEIGHT, Guide.stop, new Point(x, y));
} // 检查是否吃到 随机点
public void take() {
if (!parts.get(0).p.equals(eatPart.p))
return;
Part part = parts.get(parts.size() - 1);
Part newPart = new Part(Anakonda.ANSKONDA_PART_WIDTH,
Anakonda.ANSKONDA_PART_HEIGHT, part.guide, (Point) part.p
.clone());
switch (newPart.guide) {
case up:
newPart.p.y += newPart.height;
break;
case down:
newPart.p.y -= newPart.height;
break;
case left:
newPart.p.x += newPart.width;
break;
case right:
newPart.p.x -= newPart.width;
break;
}
parts.add(newPart);
eatPart = newPart();
} // 挂的方法
public boolean gameOver() {
Part part = parts.get(0);
if (part.p.x < 0 || part.p.x > Anakonda.GAME_FACE_WIDTH || part.p.y < 0
|| part.p.y > Anakonda.GAME_FACE_HEIGHT) {
JOptionPane.showMessageDialog(this, "GAME OVER!", "warning",
JOptionPane.OK_OPTION);
initialization();
return true;
}
return false;
}}// 小点蛇类
class Part {
int width;
int height;
Guide guide = Guide.down;
Point p; public Part() {
} public Part(int width, int height, Guide guide, Point p) {
this.width = width;
this.height = height;
this.guide = guide;
this.p = p;
} public void draw(Graphics g) {
nextWay();
g.draw3DRect(p.x, p.y, width, height, false);
} public void nextWay() {
switch (guide) {
case up:
p.y = p.y - height;
break;
case down:
p.y = p.y + height;
break;
case left:
p.x = p.x - width;
break;
case right:
p.x = p.x + width;
break;
}
}
}class KeyMonitor extends KeyAdapter { private Control control; public KeyMonitor(Control control) {
this.control = control;
} @Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
if (control.parts.get(0).guide == Guide.down)
return;
control.parts.get(0).guide = Guide.up;
break;
case KeyEvent.VK_DOWN:
if (control.parts.get(0).guide == Guide.up)
return;
control.parts.get(0).guide = Guide.down;
break;
case KeyEvent.VK_LEFT:
if (control.parts.get(0).guide == Guide.right)
return;
control.parts.get(0).guide = Guide.left;
break;
case KeyEvent.VK_RIGHT:
if (control.parts.get(0).guide == Guide.left)
return;
control.parts.get(0).guide = Guide.right;
break;
default:
return;
}
}
}enum Guide {
up, down, left, right, stop
}
楼上的哥哥,说的对。初学者要看一些基础的视频,慢慢的由浅到深
这个马士兵老师分享的从基础到高手的视频下载地址,你去看看吧,希望对你有帮助
小弟感激不尽啊
我邮箱[email protected]