问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求JAVA课设一个~要有完整源代码的~

发布网友 发布时间:2022-05-19 04:02

我来回答

2个回答

热心网友 时间:2024-03-04 04:13

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class GreedSnake implements KeyListener{
JFrame mainFrame;
Canvas paintCanvas;
JLabel labelScore;
SnakeModel snakeModel = null;

public static final int canvasWidth = 200;
public static final int canvasHeight = 300;

public static final int nodeWidth = 10;
public static final int nodeHeight = 10;

public GreedSnake() {
mainFrame = new JFrame("GreedSnake");

Container cp = mainFrame.getContentPane();

labelScore = new JLabel("Score:");
cp.add(labelScore, BorderLayout.NORTH);

paintCanvas = new Canvas();
paintCanvas.setSize(canvasWidth+1,canvasHeight+1);
paintCanvas.addKeyListener(this);
cp.add(paintCanvas, BorderLayout.CENTER);

JPanel panelButtom = new JPanel();
panelButtom.setLayout(new BorderLayout());
JLabel labelHelp;
labelHelp = new JLabel("PageUp, PageDown for speed;", JLabel.CENTER);
panelButtom.add(labelHelp, BorderLayout.NORTH);
labelHelp = new JLabel("ENTER or R or S for start;", JLabel.CENTER);
panelButtom.add(labelHelp, BorderLayout.CENTER);
labelHelp = new JLabel("SPACE or P for pause",JLabel.CENTER);
panelButtom.add(labelHelp, BorderLayout.SOUTH);
cp.add(panelButtom,BorderLayout.SOUTH);

mainFrame.addKeyListener(this);
mainFrame.pack();
mainFrame.setResizable(false);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
begin();
}

public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();
if (snakeModel.running)
switch(keyCode){
case KeyEvent.VK_UP:
snakeModel.changeDirection(SnakeModel.UP);
break;
case KeyEvent.VK_DOWN:
snakeModel.changeDirection(SnakeModel.DOWN);
break;
case KeyEvent.VK_LEFT:
snakeModel.changeDirection(SnakeModel.LEFT);
break;
case KeyEvent.VK_RIGHT:
snakeModel.changeDirection(SnakeModel.RIGHT);
break;
case KeyEvent.VK_ADD:
case KeyEvent.VK_PAGE_UP:
snakeModel.speedUp();
break;
case KeyEvent.VK_SUBTRACT:
case KeyEvent.VK_PAGE_DOWN:
snakeModel.speedDown();
break;
case KeyEvent.VK_SPACE:
case KeyEvent.VK_P:
snakeModel.changePauseState();
break;
default:
}

if (keyCode == KeyEvent.VK_R ||
keyCode == KeyEvent.VK_S ||
keyCode == KeyEvent.VK_ENTER){
snakeModel.running = false;
begin();
}
}

public void keyReleased(KeyEvent e){
}

public void keyTyped(KeyEvent e){
}

void repaint(){
Graphics g = paintCanvas.getGraphics();

//draw background
g.setColor(Color.WHITE);
g.fillRect(0,0,canvasWidth,canvasHeight);

// draw the snake
g.setColor(Color.BLACK);
LinkedList na = snakeModel.nodeArray;
Iterator it = na.iterator();
while(it.hasNext()){
Node n = (Node)it.next();
drawNode(g,n);
}

// draw the food
g.setColor(Color.RED);
Node n = snakeModel.food;
drawNode(g,n);

updateScore();
}

private void drawNode(Graphics g, Node n){
g.fillRect(n.x*nodeWidth,
n.y*nodeHeight,
nodeWidth-1,
nodeHeight-1);
}

public void updateScore(){
String s = "Score: " + snakeModel.score;
labelScore.setText(s);
}

void begin(){
if (snakeModel == null || !snakeModel.running){
snakeModel = new SnakeModel(this,
canvasWidth/nodeWidth,
canvasHeight/nodeHeight);
(new Thread(snakeModel)).start();
}
}

public static void main(String[] args){
GreedSnake gs = new GreedSnake();
}
}

///////////////////////////////////////////////////
// 文件2
///////////////////////////////////////////////////

import java.util.*;
import javax.swing.*;

class SnakeModel implements Runnable{
GreedSnake gs;
boolean[][] matrix;
LinkedList nodeArray = new LinkedList();
Node food;
int maxX;
int maxY;
int direction = 2;
boolean running = false;

int timeInterval = 200;
double speedChangeRate = 0.75;
boolean paused = false;

int score = 0;
int countMove = 0;

// UP and DOWN should be even
// RIGHT and LEFT should be odd
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(GreedSnake gs, int maxX, int maxY){
this.gs = gs;
this.maxX = maxX;
this.maxY = maxY;

// initial matirx
matrix = new boolean[maxX][];
for(int i=0; i<maxX; ++i){
matrix = new boolean[maxY];
Arrays.fill(matrix,false);
}

// initial the snake
int initArrayLength = maxX > 20 ? 10 : maxX/2;
for(int i = 0; i < initArrayLength; ++i){
int x = maxX/2+i;
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 % 2 != newDirection % 2){
direction = newDirection;
}
}

public boolean moveOn(){
Node n = (Node)nodeArray.getFirst();
int x = n.x;
int y = n.y;

switch(direction){
case UP:
y--;
break;
case DOWN:
y++;
break;
case LEFT:
x--;
break;
case RIGHT:
x++;
break;
}

if ((0 <= x && x < maxX) && (0 <= y && y < maxY)){
if (matrix[x][y]){
if(x == food.x && y == food.y){
nodeArray.addFirst(food);

int scoreGet = (10000 - 200 * countMove) / timeInterval;
score += scoreGet > 0? scoreGet : 10;
countMove = 0;

food = createFood();
matrix[food.x][food.y] = true;
return true;
}
else
return false;
}
else{
nodeArray.addFirst(new Node(x,y));
matrix[x][y] = true;
n = (Node)nodeArray.removeLast();
matrix[n.x][n.y] = false;
countMove++;
return true;
}
}

热心网友 时间:2024-03-04 04:13

哥 ,,,,,
能具体一点么。?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么退出夸克HD账号登录状态? 猫感冒了看兽医要多少钱 Pka 与 PH的区别及各自的应用领域 储干在公司是干什么的职位啊 2025数字博览会 岗位丨申万宏源证券研究所招聘实习生(可留用), 国海证券研究所+开源证 ... 用发酵粉蒸馒头如何蒸? 雷蛇现在的售后保修政策是怎样的有个鼠标双击了 安代驾好还是e代驾好 急需一篇科技小论文,六年级水平的`要快`谢谢啊`! 百度图片上上随便照一张图片,然后自己编辑主要是添加文字,然后发表,有没有不尊重别人的作品权。 不尊重别人的表现有哪些? 医用一次性口罩一般可以戴几天? 赛琳娜粉丝控诉明星大侦探P图,图片体现了怎样的不尊重? 从成都出发途径西昌到云南自驾旅行路线该怎么走?途中有哪些旅游景点? 用java编写扫雷程序!谁有详细的课件介绍加源码(或相关书籍或视频啊?) 租房子没阳台一样可以养花!6种袖珍盆栽,巴掌大地就能种 安全工程师如何到别的单位检查 被跳蚤咬怎么办?跳蚤怕什么 地下城狂战士怎么合成天空套,并且怎么加点??? 详细介绍地下城狂战士各种套装与其属性、价格 合出来的天空套属性都是一样的吗? 地下城与勇士80级刷图狂战士天空套怎么选属性 笔记本外置显卡是不是在原有的显卡上增加?外置显卡是不是什么笔记本都能用?还是说有USB插口的就行? 狂战士天空套属性怎么加 在家做鸡翅,一定要清洗的特别干净,否则就不好吃了 狂战士天空套加什么属性 台式集成显卡坏了能用usb显卡吗? DNF狂战士纯PK加点,天空套加什么属性? 服务器的USB显卡能代替集成显卡吗 朋友圈随随便便传别人照片是不是不尊重他人行为 也就是他不在乎这个人和他的感受 哪些看了一点社会不公平的图片就说社会怎样的人进来看 java 源代码 全国人民代表大会常务委员会行使哪些职权 求java程序源码 全国人大常务委员会的职权是什么 喇叭的没标清楚正负极这么能确定? 全国人民代表大会常务委员会的职权 全国人大常务委员会的职权 我国《宪法》规定全国人民代表大会常务委员会行使哪些职权 全国人民代表大会常务委员会的职权是 全国人大常务委员会职权 全国人民代表大会常务委员会的职责有 全国人民代表大会常务委员会的职权有什么 全国人民代表大会及其常务委员会行使的是什么权呢 人大常委会职权 全国人大常委会职权包括 全国人民代表大会常务委员会行使哪些职权? 全国人民代表大会依法行使的职权 属于全国人民代表大会可以行使的职权有