经典游戏贪食蛇的java实现
学习了线程,向量泛型编程,可以通过一个实例来应用所学知识,本课实现了经典游戏贪食蛇,自认为结构还算合理于2009年8月12日,16:05分
实现贪食蛇的思路
1。首先定义窗口200X400 ,实现控制1个矩形方块20X20
2。通过按键控制方块移动
3。实现线程控制方块移动每次一格(20X20),通过按键改变方向
4.实现在窗口中随机出现可以吃的小块 作为要是20的倍数
5.实现方块和可以吃的小块碰撞
6.将蛇的身体每一块定义为Vector,有每块对应一个对象
Node{
int x;
int y;
int nextDir;
}
7。实现死亡判定和分数判定
第一个类:
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class SnakeFrame extends JFrame implements KeyListener{
public JPanel gamePanel;//游戏面板
public Vector<Node>allNode=new Vector<Node>(); // 所有结点
class Node{
int x;
int y;
int nextDir;
public Node(int x,int y,int d)
{
this.x=x;
this.y=y;
this.nextDir=d;
}
};
public static final int S_UP=1;
public static final int S_DOWN=2;
public static final int S_LEFT=3;
public static final int S_RIGHT=4;
public static final int S_STOP=-1;
//头节点
public Node head=new Node(80,80,SnakeFrame.S_LEFT);
public Node eatNode;
public Random rand=new Random();
public SnakeFrame()
{
this.setBounds(0, 0, 200, 400);
this.setTitle("贪食蛇");
this.setClosed(
相关文档:
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
一. Proxy模式定义:
为其他对象提供一种代理以控制这个对象的访问.
二.模式解说
Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上.
在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),
......
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离 ......
题目:使用Java实现链表
思路:
链表的特点:链表的的元素之间通过指针连接起来。通常有一个头指针指向第一个元素,通过第一个元素可以访问到其他的元素。
链表中数据如何存储:链表中的每个元素应该由表示数据的域和指向其他元素的指针组成。
链表的常用操作:创建链表、在链表中添加元素(在最后添加或者在某个具体的 ......
01. 说出ArrayList,Vector的区别,HashMap和Hashtable的区别。
02. final, finally, finalize的区别。
03. abstract class和interface有什么区别?
04. 什么时候用assert。
05. GC是什么? 为什么要有GC?&nb ......