java中的贪食蛇例程
最近要重新学习Java,找个例子来实践,在网上找了很多例程来看,自己重新编写了一个贪食蛇的例子,记在这里。
1.SnakeModel.java
import java.util.Observable;
import java.util.LinkedList;
import java.util.Arrays;
import java.util.Random;
import javax.swing.*;
//Observable类一般代表数据,实现接口Runnable表明创建一个进程
public class SnakeModel extends Observable implements Runnable {
boolean[][] matrix; //指示位置上是否有蛇体或食物;
LinkedList nodeArray = new LinkedList(); //蛇体
Node food;
int maxX; //X轴边线,即为画布中X轴个数
int maxY; //y轴边线,即为画布中Y轴个数
int direction = UP; //蛇运行的方向,初始为向上(UP)
boolean isRunning = false; //运行状态
int timeInterval = 200; //时间间隔,毫秒级
double speedChangeRate = 0.75; //每次的速度变化率
boolean isPaused = false ;//暂停标志
int score = 0; //得分
int countMove = 0; //吃到食物前移动的次数
public static final int UP = 2;
public static final int DOWN =4;
public static final int LEFT= 1;
public static final int RIGHT =3;
public SnakeModel(int maxX, int maxY){
this.maxX = maxX;
this.maxY = maxY;
reset();
}
public void reset(){
direction = SnakeModel.UP;
timeInterval = 200;
isPaused = false;
score = 0;
countMove = 0;
//初始化矩阵
matrix = new boolean[maxX][];
for(int i = 0; i < maxX; ++i){
//关于数组的新建
matrix[i] = new boolean[maxY];
Arrays.fill(matrix[i],false);
}
//初始化蛇体
//初始蛇体长度按照横轴的长度,若横轴>20,则蛇体长度为10,否则为横轴一半
int initArrayLength = maxX > 20 ? 10 : maxX / 2;
nodeArray.clear();
for(int i = 0; i < initArrayLength; ++i){
int x = maxX / 2;
int y = maxY / 2;
nodeArray.addLast(new Node(x, y));
matrix[x][y] = true;
}
//创建食物
food = createFood();
matrix[food.x][food.y] = true;
}
public void changeDirection(int newDirection){
//改变方向不能与原方向同向或反向
if((direction & 1
相关文档:
两个tomcat Java定时任务的例子
例一:
本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。
专业的开源工具可参考Quartz:http://www.opensymphony.com/quartz/
MyListener:
import
java.util.Timer;
import
javax.servlet.ServletContextEvent;
i ......
java线程池的原理与实现
[分享]Java 线程池的原理与实现2008-07-18
14:53------------------------------------------------------------------------------------------------
这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧 ......
关于java的集合类,以及HashMap中Set的用法!
2005-10-22 14:47:43 Sat | 阅读(547)次
package com.tiantian;
import java.util.*;
public class JAVAContainer {
public static void main(String[] args) throws Exception {
//&nbs ......
大家知道,在1991年,几乎与Linux同时,SUN发布了Java编程语言。不久,我的大学同学(比我低两年)王克宏教授(清华博士导师)与SUN合作成立了中国最早的“Java研究中心”,并且担任该中心主任。从此,我开始注意Java技术的发展动态。我家中的存书,以Java书籍最多(当然,除了数学书籍 ......