java小游戏 以前的java游戏在哪找

本篇文章给大家谈谈java小游戏,以及以前的java游戏在哪找对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,*重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

一、用JAVA编一个小游戏或者其他程序

贪吃蛇程序:

GreedSnake.java(也是程序入口):

import java.awt.BorderLayout;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Container;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.Iterator;

import java.util.LinkedList;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

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;

//----------------------------------------------------------------------

// GreedSnake():初始化游戏界面

//----------------------------------------------------------------------

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();

}

//----------------------------------------------------------------------

// keyPressed():按键检测

//----------------------------------------------------------------------

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();

}

}

//----------------------------------------------------------------------

// keyReleased():空函数

//----------------------------------------------------------------------

public void keyReleased(KeyEvent e){

}

//----------------------------------------------------------------------

// keyTyped():空函数

//----------------------------------------------------------------------

public void keyTyped(KeyEvent e){

}

//----------------------------------------------------------------------

// repaint():绘制游戏界面(包括蛇和食物)

//----------------------------------------------------------------------

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()){

java小游戏 以前的java游戏在哪找 Node n=(Node) it.next();

drawNode(g, n);

}

// draw the food

g.setColor(Color****);

Node n= snakeModel.food;

drawNode(g, n);

updateScore();

}

//----------------------------------------------------------------------

// drawNode():绘画某一结点(蛇身或食物)

//----------------------------------------------------------------------

private void drawNode(Graphics g, Node n){

g.fillRect(n.x* nodeWidth, n.y* nodeHeight, nodeWidth- 1,

nodeHeight- 1);

}

//----------------------------------------------------------------------

// updateScore():改变计分牌

//----------------------------------------------------------------------

public void updateScore(){

String s="Score:"+ snakeModel.score;

labelScore.setText(s);

}

//----------------------------------------------------------------------

// begin():游戏开始,放置贪吃蛇

//----------------------------------------------------------------------

void begin(){

if(snakeModel== null||!snakeModel.running){

snakeModel= new SnakeModel(this, canvasWidth/ nodeWidth,

this.canvasHeight/ nodeHeight);

(new Thread(snakeModel)).start();

}

}

//----------------------------------------------------------------------

// main():主函数

//----------------------------------------------------------------------

public static void main(String[] args){

GreedSnake gs= new GreedSnake();

}

}

Node.java:

public class Node{

int x;

int y;

Node(int x, int y){

this.x= x;

this.y= y;

}

}

SnakeModel.java:

import java.util.Arrays;

import java.util.LinkedList;

import java.util.Random;

import javax.swing.JOptionPane;

public 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和DOWN是偶数,RIGHT和LEFT是奇数

public static final int UP= 2;

public static final int DOWN= 4;

public static final int LEFT= 1;

public static final int RIGHT= 3;

//----------------------------------------------------------------------

// GreedModel():初始化界面

//----------------------------------------------------------------------

public SnakeModel(GreedSnake gs, int maxX, int maxY){

this.gs= gs;

this.maxX= maxX;

this.maxY= maxY;

matrix= new boolean[maxX][];

for(int i= 0; i< maxX;++i){

matrix[i]= new boolean[maxY];

Arrays.fill(matrix[i], false);//没有蛇和食物的地区置false

}

//初始化贪吃蛇

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;//蛇身处置true

}

food= createFood();

matrix[food.x][food.y]= true;//食物处置true

}

//----------------------------------------------------------------------

// changeDirection():改变运动方向

//----------------------------------------------------------------------

public void changeDirection(int newDirection){

if(direction* 2!= newDirection* 2)//避免冲突

{

direction= newDirection;

}

}

//----------------------------------------------------------------------

// moveOn():贪吃蛇运动函数

//----------------------------------------------------------------------

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;

}

}

return false;//越界(撞到墙壁)

}

//----------------------------------------------------------------------

// run():贪吃蛇运动线程

//----------------------------------------------------------------------

public void run(){

running= true;

while(running){

try{

Thread.sleep(timeInterval);

} catch(Exception e){

break;

}

if(!paused){

if(moveOn())//未结束

{

gs.repaint();

} else//游戏结束

{

JOptionPane.showMessageDialog(null,"GAME OVER",

"Game Over", JOptionPane*****RMATION_MESSAGE);

break;

}

}

}

running= false;

}

//----------------------------------------------------------------------

// createFood():生成食物及放置地点

//----------------------------------------------------------------------

private Node createFood(){

int x= 0;

int y= 0;

do{

Random r= new Random();

x= r.nextInt(maxX);

y= r.nextInt(maxY);

} while(matrix[x][y]);

return new Node(x, y);

}

//----------------------------------------------------------------------

// speedUp():加快蛇运动速度

//----------------------------------------------------------------------

public void speedUp(){

timeInterval*= speedChangeRate;

}

//----------------------------------------------------------------------

// speedDown():放慢蛇运动速度

//----------------------------------------------------------------------

public void speedDown(){

timeInterval/= speedChangeRate;

}

//----------------------------------------------------------------------

// changePauseState():改变游戏状态(暂停或继续)

//----------------------------------------------------------------------

public void changePauseState(){

paused=!paused;

}

}

二、求一个简单又有趣的JAVA小游戏代码

具体如下:

连连看的小源码

package Lianliankan;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class lianliankan implements ActionListener

{

JFrame mainFrame;//主面板

Container thisContainer;

JPanel centerPanel,southPanel,northPanel;//子面板

JButton diamondsButton[][]= new JButton[6][5];//游戏按钮数组

JButton exitButton,resetButton,newlyButton;//退出,重列,重新开始按钮

JLabel fractionLable=new JLabel("0");//分数标签

JButton firstButton,secondButton;//

分别记录两次62616964757a686964616fe59b9ee7ad9431333335326239被选中的按钮

int grid[][]= new int[8][7];//储存游戏按钮位置

static boolean pressInformation=false;//判断是否有按钮被选中

int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV;//游戏按钮的位置坐标

int i,j,k,n;//消除方法控制

代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。

对于字符和Unicode数据的位模式的定义,此模式代表特定字母、数字或符号(例如 0x20代表一个空格,而 0x74代表字符“t”)。一些数据类型每个字符使用一个字节;每个字节可以具有 256个不同的位模式中的一个模式。

在计算机中,字符由不同的位模式(ON或 OFF)表示。每个字节有 8位,这 8位可以有 256种不同的 ON和 OFF组合模式。对于使用 1个字节存储每个字符的程序,通过给每个位模式指派字符可表示*多 256个不同的字符。2个字节有 16位,这 16位可以有 65,536种**的 ON和 OFF组合模式。使用 2个字节表示每个字符的程序可表示*多 65,536个字符。

单字节代码页是字符定义,这些字符映射到每个字节可能有的 256种位模式中的每一种。代码页定义大小写字符、数字、符号以及!、@、#、*等特殊字符的位模式。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。

虽然用于表示 A到 Z拉丁字母表字符的位模式在所有的代码页中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间**数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。

如果某个数据库为来自许多不同**的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括所有客户端计算机所需的全部扩展字符。而且,在代码页间不停地转换需要花费大量的处理时间。

相关文章
  • jar手机游戏 手机java游戏大全

    其实jar手机游戏的问题并不复杂,但是又很多的朋友都不太了解手机java游戏大全,因此呢,今天小编就来为大家分享jar手机游戏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧! 一、有什么好玩的JAR游戏 好玩的JAR游戏有: 为玩家推荐几款有趣、好玩、有特色的手机游戏,帮助大家找到*适合的游戏,今天**手游带来平台的人气福利手游排行,还有优惠券和礼包码可以领取哦

  • i酷加速器 ikunnn加速**网

    大家好,关于i酷加速器很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于ikunnn加速**网的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助! 一、如何设置i酷加速器的共享目录及加速提醒 要安装i酷加速器,首先,请双击运行安装包&lt;/,然后点击下一步,开始安装过程。 在设置安装位置时,您可以选择"浏览"功能

  • i淮安 i淮安官网

    大家好,今天小编来为大家解答以下的问题,关于i淮安,i淮安官网这个很多人还不知道,现在让我们一起来看看吧! 一、i淮安如何在电脑上安装 需要下载一个手机模拟器就可以安装i淮安了。 “i淮安”***被列入淮安市****为民办实事工程,由市工信*牵头、多部门多单位共同参与建设,是集政务和民生于一体的一站式便民服务平台。 该平台包含市民版和企业版两大模块,涵盖了**、教育、交通、社保、公积金、户籍

  • iw战队是哪个赛区的 战队赛什么时候可以打

    大家好,iw战队是哪个赛区的相信很多的网友都不是很明白,包括战队赛什么时候可以打也是一样,不过没有关系,接下来就来为大家分享关于iw战队是哪个赛区的和战队赛什么时候可以打的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧! 一、英雄联盟iw是哪个**的战队 英雄联盟比赛中会有很多参赛队伍,其中iw这个队伍可能听过的玩家比较少,在去年的MSI赛事中,和RNG首战对阵的就是iw

  • iw战队 lolwe战队成员

    本篇文章给大家谈谈iw战队,以及lolwe战队成员对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,*重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。 一、英雄联盟iw是哪个**的战队 英雄联盟比赛中会有很多参赛队伍,其中iw这个队伍可能听过的玩家比较少,在去年的MSI赛事中,和RNG首战对阵的就是iw,有玩家想知道iw是哪个**的

  • java手机游戏 手机java版我的世界

    大家好,java手机游戏相信很多的网友都不是很明白,包括手机java版我的世界也是一样,不过没有关系,接下来就来为大家分享关于java手机游戏和手机java版我的世界的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧! 一、安卓手机上Java模拟器的安装与使用 很多人不知道java模拟器安卓版怎么安装和使用,如果你想在安卓手机上体验java软件和游戏

  • java手机游戏版 java游戏**版网站

    大家好,感谢邀请,今天来为大家分享一下java手机游戏版的问题,以及和java游戏**版网站的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧! 一、我的世界java版启动器安卓游戏如何下载 下载地址: 类型:安卓游戏-**游戏 版本:我的世界java版启动器v3.3.1.1 大小:60.54M 语言:中文 平台:安卓APK

  • java游戏 以前的java游戏在哪找

    大家好,今天小编来为大家解答java游戏这个问题,以前的java游戏在哪找很多人还不知道,现在让我们一起来看看吧! 一、jar的手机游戏怎么玩 JAR文件是一种Java应用程序的归档文件格式,通常用于分发和部署Java应用程序,包括一些手机游戏。JAR文件包含了Java程序的所有相关文件,如.class文件、资源文件和元数据文件等。 要在手机上玩JAR格式的游戏,首先确保手机支持Java应用

  • java游戏模拟器 java老版手机游戏合集

    本篇文章给大家谈谈java游戏模拟器,以及java老版手机游戏合集对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,*重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。 一、java游戏模拟器电脑版下载地址 下载地址: 类型:安卓游戏-**游戏 版本:java游戏模拟器***v0.79+MC_0.98.6.2 大小:5.45M 语言:中文 平台:安卓APK

  • jdg战队 jdg战队成员介绍

    大家好,感谢邀请,今天来为大家分享一下jdg战队的问题,以及和jdg战队成员介绍的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧! 一、jdg战队成员名单 1、白家浩 英文名:JDG.369 位置:上单 国籍:中国 生日:2001.07.12 擅长英雄:鳄鱼、船长、吸血鬼 简介:白家浩(游戏ID:369)