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

1、public class lianliankan implements ActionListener

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

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

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

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

6、JButton firstButton,secondButton;//

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

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

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

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

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

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

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

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

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

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

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

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

public class GreedSnake implements KeyListener{

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():初始化游戏界面

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

mainFrame= new JFrame("GreedSnake");

Container cp= mainFrame.getContentPane();

labelScore= new JLabel("Score:");

cp.add(labelScore, BorderLayout.NORTH);

paintCanvas.setSize(canvasWidth+ 1, canvasHeight+ 1);

paintCanvas.addKeyListener(this);

cp.add(paintCanvas, BorderLayout.CENTER);

JPanel panelButtom= new JPanel();

panelButtom.setLayout(new BorderLayout());

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.setResizable(false);

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

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

public void keyPressed(KeyEvent e){

snakeModel.changeDirection(SnakeModel.UP);

snakeModel.changeDirection(SnakeModel.DOWN);

snakeModel.changeDirection(SnakeModel.LEFT);

snakeModel.changeDirection(SnakeModel.RIGHT);

snakeModel.speedDown();//减速

snakeModel.changePauseState();//暂停或继续

if(keyCode== KeyEvent.VK_R|| keyCode== KeyEvent.VK_S

|| keyCode== KeyEvent.VK_ENTER){

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

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

public void keyReleased(KeyEvent e){

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

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

public void keyTyped(KeyEvent e){

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

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

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

Graphics g= paintCanvas.getGraphics();

g.fillRect(0, 0, canvasWidth, canvasHeight);

LinkedList na= snakeModel.nodeArray;

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

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

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

java小游戏 求一个简单又有趣的JAVA小游戏代码 private void drawNode(Graphics g, Node n){

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

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

// updateScore():改变计分牌

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

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

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

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

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

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

snakeModel= new SnakeModel(this, canvasWidth/ nodeWidth,

this.canvasHeight/ nodeHeight);

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

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

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

public static void main(String[] args){

GreedSnake gs= new GreedSnake();

import javax.swing.JOptionPane;

public class SnakeModel implements Runnable{

boolean[][] matrix;//界面数据保存在数组里

LinkedList nodeArray= new LinkedList();

int timeInterval= 200;//间隔时间(速度)

double speedChangeRate= 0.75;//速度改变程度

boolean paused= false;//游戏状态

// 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;

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

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

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

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

nodeArray.addLast(new Node(x, y));

matrix[x][y]= true;//蛇身处置true

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

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

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

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

public void changeDirection(int newDirection){

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

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

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

Node n=(Node) nodeArray.getFirst();

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;

matrix[food.x][food.y]= true;

nodeArray.addFirst(new Node(x, y));//加上头部

n=(Node) nodeArray.removeLast();//去掉尾部

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

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

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

JOptionPane.showMessageDialog(null,"GAME OVER",

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

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

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

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

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

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

timeInterval*= speedChangeRate;

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

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

timeInterval/= speedChangeRate;

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

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

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

public void changePauseState(){

public class lianliankan implements ActionListener

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

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

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

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

JButton firstButton,secondButton;//分别记录两次被选中的按钮

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

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

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

mainFrame=new JFrame("JKJ连连看");

thisContainer= mainFrame.getContentPane();

thisContainer.setLayout(new BorderLayout());

thisContainer.add(centerPanel,"Center");

thisContainer.add(southPanel,"South");

thisContainer.add(northPanel,"North");

centerPanel.setLayout(new GridLayout(6,5));

for(int cols= 0;cols< 6;cols++){

for(int rows= 0;rows< 5;rows++){

diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));

diamondsButton[cols][rows].addActionListener(this);

centerPanel.add(diamondsButton[cols][rows]);

exitButton=new JButton("退出");

exitButton.addActionListener(this);

resetButton=new JButton("重列");

resetButton.addActionListener(this);

newlyButton=new JButton("再来一*");

newlyButton.addActionListener(this);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));

northPanel.add(fractionLable);

mainFrame.setBounds(280,100,500,450);

for(int twins=1;twins<=15;twins++){

randoms=(int)(Math.random()*25+1);

for(int alike=1;alike<=2;alike++){

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

this.grid[cols][rows]=randoms;

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

this.grid[cols][rows]=save[n];

pressInformation=false;//这里一定要将按钮点击信息归为初始

diamondsButton[i][j].setVisible(false);

public void estimateEven(int placeX,int placeY,JButton bz){

if(fristMsg==secondMsg&& secondButton!=firstButton){

public void xiao(){//相同的情况下能不能消去。仔细分析,不一条条注释

if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y))){//判断是否相邻

if(grid[x0][j]==0){//判断**个按钮同行哪个按钮为空

if(y>j){//如果第二个按钮的Y坐标大于空按钮的Y坐标说明**按钮在第二按钮左边

for(i=y-1;i>=j;i--){//判断第二按钮左侧直到**按钮中间有没有按钮

else{ k=1;}//K=1说明通过了**次验证

if(y<j){//如果第二个按钮的Y坐标小于空按钮的Y坐标说明**按钮在第二按钮右边

for(i=y+1;i<=j;i++){//判断第二按钮左侧直到**按钮中间有没有按钮

if(y0>j){//**按钮同行空按钮在左边

for(i=y0-1;i>=j;i--){//判断**按钮同左侧空按钮之间有没按钮

else{ k=2;}//K=2说明通过了第二次验证

if(y0<j){//**按钮同行空按钮在与第二按钮之间

firstButton.setVisible(false);

secondButton.setVisible(false);

public void actionPerformed(ActionEvent e){

if(e.getSource()==newlyButton){

if(e.getSource()==resetButton)

for(int cols= 0;cols< 6;cols++){

for(int rows= 0;rows< 5;rows++){

if(e.getSource()==diamondsButton[cols][rows])

estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);

public static void main(String[] args){

lianliankan llk= new lianliankan();

关于本次java小游戏和求一个简单又有趣的JAVA小游戏代码的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

相关文章
  • jar手机游戏 有什么好玩的JAR游戏

    JAR文件是一种Java应用程序的归档文件格式,通常用于分发和部署Java应用程序,包括一些手机游戏。JAR文件包含了Java程序的所有相关文件,如.class文件、资源文件和元数据文件等。 要在手机上玩JAR格式的游戏,首先确保手机支持Java应用。在早期的智能手机上,Java是一个常见的平台,许多手机都预装了Java虚拟机(JVM),可以直接运行JAR文件。然而

  • i酷加速器 打开i酷加速就下载吗

    这不是bug是游戏崩盘如果你的LOL无限崩溃了,请认真往下看。耐心点!! 1.是否开过多玩盒子,173神灯等辅助工具。 2.是否用360游戏提速器优化过网络进程。 4.电脑是否有**,**。是否有其他软件占用的了过多的网络。尤其是播放器的后台加速器,比如PPS,I酷等等。 **种情况,*麻烦,由于多玩盒子提供了游戏修复功能,可以先尝试修复下,不行?OK,卸载盒子,神灯。 记住是卸载

  • i淮安 i淮安如何在电脑上安装

    这得取决你修改的是什么信息,有以下几种情况: 1.如果只是修改淮安账户姓名,首先找到“我的”,账户设置,然后实名**,更改账户姓名。 2.如果是修改身份**,实名**之后,您的身份信息不能自行修改。未充值的用户,可以联系客服,申请实名**解绑操作。在客服核实您的身份后,可以为您做解绑操作。解绑后可以重新做新的实名**操作;如果您已经有过充值操作,那么实名**信息是不可以进行修改的。 3

  • iw战队是哪个赛区的 iw是哪个**的战队

    1、英雄联盟比赛中会有很多参赛队伍,其中iw这个队伍可能听过的玩家比较少,在去年的MSI赛事中,和RNG首战对阵的就是iw,有玩家想知道iw是哪个**的,接下来小编为大家带来了详细介绍。 2、土耳其,IW全名是stanbul Wildcats,是一支来自土耳其的电子竞技战队,隶属于TCL赛区,而且IW是2019年才成立的新**伍,听说过的人少很正常。 3、战队全称:&#304;stanbul

  • iw战队 iw是哪个**的战队

    1、英雄联盟比赛中会有很多参赛队伍,其中iw这个队伍可能听过的玩家比较少,在去年的MSI赛事中,和RNG首战对阵的就是iw,有玩家想知道iw是哪个**的,接下来小编为大家带来了详细介绍。 2、土耳其,IW全名是stanbul Wildcats,是一支来自土耳其的电子竞技战队,隶属于TCL赛区,而且IW是2019年才成立的新**伍,听说过的人少很正常。 3、战队全称:&#304;stanbul

  • java手机游戏 诺基亚java单机游戏盘点

    1、呵呵,好玩的太多了,就推荐一些我认为我玩不错的给你,但不知道喜欢什么类型的,我就每种类型都推荐一些给你吧: 2、角色:圣斗士星矢之悲伤镇魂曲光明传说金庸群侠传之苍龙逐日守护者之龙战士地下城与勇士鬼剑士版...... 3、冒险:铁甲战魂5***惊魂夜2汉化版寂静岭2汉化版无敌战将汉化版七夜忍者神龟之*终的** 4、动作:刺客信条贝奥武夫波斯王子零僵尸危机斯巴达勇士 5、策略

  • java手机游戏版 诺基亚Java老版手机游戏合集

    学习完java的知识是可以进行手游开发的,但是还需要在java的基础上进行移动端的深造。 手游目前比较火的开发平台有Android和IOS: 1、android具有开源的特*,支持的手机比较多,需要java的基础知识,如果已经学习了java,进行Android开发还是相对于容易的。那么如果想要在java版本的eclipse上开发android,就需要添加android开发所需要的插件

  • java游戏 JAVA能写游戏吗

    1、数百种上古神兵配合多种震撼寰宇的技能效果,体验后羿箭爆苍穹的无与伦比的战斗快感,看羿神面对四大神兽金乌、饕餮等史诗级boss如何横扫**,射出那一箭的风情! 2、黑暗骑士-黎明升起 The Dark Knight Rises 3、玩家可操作蝙蝠侠从高处滑翔而下,甚至还有骑着蝙蝠摩托车(Batpod)高速飞车追逐的场景,同时玩家可操作新角色猫女与蝙蝠侠,用帅气的格斗招式痛扁小喽啰。 1

  • java游戏模拟器 java游戏模拟器电脑版下载地址

    下载地址: 版本:java游戏模拟器***v0.79+MC_0.98.6.2 游戏标签: java游戏模拟器游戏工具***手机java游戏模拟器安卓版是辅助Java游戏运行的模拟器工具,说起Java系列游戏想必80/90后并不陌生,虽然现在我们大多数人都是使用的智能手机,但我们可以借助工具重回直扳机年代,同时还能设置一些基础的游戏操作数值。

  • jdg战队 英雄联盟jdg战队成员介绍

    2023英雄联盟JDG战队成员分别是上单369、打野Kanavi、中单knight、下路ruler、辅助missing。 白家浩(369)是一位非常出色的上单选手,他的对线能力和团战发挥都备受赞誉。在过去的比赛中,他以其出色的个人表现帮助JDG战队取得了许多重要的胜利。 徐进赫(Kanavi)是一位非常出色的打野选手,他的节奏掌控和野区管理能力非常出色