java小游戏排行榜功能
创始人
2024-06-10 16:06:42
0

一、如何用java实现一个贪吃蛇小游戏

1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

3、定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

4、食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

5、接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

6、开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

二、几个Java小游戏代码

package reduce;

import java.applet.Applet;

import java.applet.AudioClip;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Toolkit;

import javax.sound.sampled.AudioFileFormat;

import javax.sound.sampled.AudioSystem;

import javax.swing.JFrame;

import javax.swing.JPanel;

import java.awt.Rectangle;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JOptionPane;

import javax.swing.JSlider;

import javax.swing.JLabel;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.io.File;

import java.util.Vector;

public class Frame extends JFrame implements Runnable{

JPanel contentPane;

JPanel jPanel1= new JPanel();

JButton jButton1= new JButton();

JSlider jSlider1= new JSlider();

JLabel jLabel1= new JLabel();

JButton jButton2= new JButton();

JLabel jLabel2= new JLabel();

int count= 1, rapidity= 80;// count当前进行的个数, rapidity游标的位置

int zhengque= 0, cuowu= 0;

int rush[]={ 10,20,30};//游戏每关的个数可以自由添加.列{ 10,20,30,40,50}

int rush_count= 0;//记录关数

char list[]={'A','B','C','D','E','F','G','H','I','J','K','L',

'M','N','O','P','Q','R','S','T','U','V','W','X','Y',

'Z','1','2','3','4','5','6','7','8','9'};//随机出现的数字可以自由添加

Vector number= new Vector();

String paiduan="true";

AudioClip Musci_anjian, Music_shibai, Music_chenggong;

public Frame(){

try{

setDefaultCloseOperation(EXIT_ON_CLOSE);

//-----------------声音文件---------------------

Musci_anjian= Applet.newAudioClip(new File("sounds//anjian.wav")

.toURL());

Music_shibai= Applet.newAudioClip(new File("sounds//shibai.wav")

.toURL());

Music_chenggong= Applet.newAudioClip(new File(

"sounds//chenggong.wav").toURL());

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

jbInit();

} catch(Exception exception){

exception.printStackTrace();

}

}

/**

* Component initialization.

*

*@throws java.lang.Exception

*/

private void jbInit() throws Exception{

contentPane=(JPanel) getContentPane();

contentPane.setLayout(null);

setSize(new Dimension(588, 530));

setTitle("Frame Title");

jPanel1.setBorder(BorderFactory.createEtchedBorder());

jPanel1.setBounds(new Rectangle(4, 4, 573, 419));

jPanel1.setLayout(null);

jButton1.setBounds(new Rectangle(277, 442, 89, 31));

jButton1.setText("开始");

jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));

jSlider1.setBounds(new Rectangle(83, 448, 164, 21));

jSlider1.setMaximum(100);

jSlider1.setMinimum(1);

jSlider1.setValue(50);

jLabel1.setText("速度");

jLabel1.setBounds(new Rectangle(35, 451, 39, 18));

jButton2.setBounds(new Rectangle(408, 442, 89, 31));

jButton2.setText("结束");

jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));

jLabel2.setText("第一关:100个");

jLabel2.setBounds(new Rectangle(414, 473, 171, 21));

contentPane.add(jPanel1);

contentPane.add(jButton2);

contentPane.add(jButton1);

contentPane.add(jSlider1);

contentPane.add(jLabel1);

contentPane.add(jLabel2);

this.addKeyListener(new MyListener());

jButton1.addKeyListener(new MyListener());

jSlider1.addKeyListener(new MyListener());

jSlider1.addChangeListener(new ChangeListener(){

public void stateChanged(ChangeEvent e){

rapidity= jSlider1.getValue();

}

});

}

public void run(){

number.clear();

zhengque= 0;

cuowu= 0;

paiduan="true";

while(count<= rush[rush_count]){

try{

Thread t= new Thread(new Tthread());

t.start();

count+= 1;

Thread.sleep(1000+(int)(Math.random()* 2000));//生产下组停顿时间

//最快1快.最慢2秒

} catch(InterruptedException e){

e.printStackTrace();

}

}

while(true){//等待最后一个字符消失

if(number.size()== 0){

break;

}

}

if(zhengque== 0){//为了以后相除..如果全部正确或者错误就会出现错误.所以..

zhengque= 1;

}

if(cuowu== 0){

cuowu= 1;

}

if(paiduan.equals("true")){//判断是否是自然结束

if(zhengque/ cuowu>= 2){

JOptionPane.showMessageDialog(null,"恭喜你过关了");

rush_count+= 1;//自动加1关

if(rush_count< rush.length){

if(rapidity> 10){//当速度大于10的时候在-5提加速度.怕速度太快

rapidity-= 5;//速度自动减10毫秒

jSlider1.setValue(rapidity);//选择位置

}

Thread t= new Thread(this);

t.start();

} else{

JOptionPane.showMessageDialog(null,"牛B...你通关了..");

rush_count= 0;

count= 0;

}

} else{

JOptionPane.showMessageDialog(null,"请再接再励");

rush_count= 0;

count= 0;

}

} else{

rush_count= 0;

count= 0;

}

}

public void jButton1_actionPerformed(ActionEvent e){

Thread t= new Thread(this);

t.start();

}

public void jButton2_actionPerformed(ActionEvent e){

count= rush[rush_count]+ 1;

paiduan="flase";

}

class Tthread implements Runnable{

public void run(){

boolean fo= true;

int Y= 0, X= 0;

JLabel show= new JLabel();

show.setFont(new java.awt.Font("宋体", Font.PLAIN, 33));

jPanel1.add(show);

X= 10+(int)(Math.random()* 400);

String parameter= list[(int)(Math.random()* list.length)]+"";

Bean bean= new Bean();

bean.setParameter(parameter);

bean.setShow(show);

number.add(bean);

show.setText(parameter);

while(fo){

//---------------------数字下移--------------------

show.setBounds(new Rectangle(X, Y+= 2, 33, 33));

try{

Thread.sleep(rapidity);

} catch(InterruptedException e){

e.printStackTrace();

}

if(Y>= 419){

fo= false;

for(int i= number.size()- 1; i>= 0; i--){

Bean bn=((Bean) number.get(i));

if(parameter.equalsIgnoreCase(bn.getParameter())){

cuowu+= 1;

jLabel2.setText("正确:"+ zhengque+"个,错误:"+ cuowu

+"个");

number.removeElementAt(i);

Music_shibai.play();

break;

}

}

}

}

}

}

class MyListener extends KeyAdapter{

public void keyPressed(KeyEvent e){

String uu= e.getKeyChar()+"";

for(int i= 0; i< number.size(); i++){

Bean bean=((Bean) number.get(i));

if(uu.equalsIgnoreCase(bean.getParameter())){

zhengque+= 1;

number.removeElementAt(i);

bean.getShow().setVisible(false);

jLabel2.setText("正确:"+ zhengque+"个,错误:"+ cuowu+"个");

Music_chenggong.play();

break;

}

}

Musci_anjian.play();

}

}

public static void main(String[] args){

try{

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch(Exception exception){

exception.printStackTrace();

}

Frame frame= new Frame();

Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize= frame.getSize();

if(frameSize.height> screenSize.height){

frameSize.height= screenSize.height;

}

if(frameSize.width> screenSize.width){

frameSize.width= screenSize.width;

}

frame.setLocation((screenSize.width- frameSize.width)/ 2,

(screenSize.height- frameSize.height)/ 2);

frame.setVisible(true);

}

}

class Frame1_jButton2_actionAdapter implements ActionListener{

private Frame adaptee;

Frame1_jButton2_actionAdapter(Frame adaptee){

this.adaptee= adaptee;

}

public void actionPerformed(ActionEvent e){

adaptee.jButton2_actionPerformed(e);

}

}

class Frame1_jButton1_actionAdapter implements ActionListener{

private Frame adaptee;

Frame1_jButton1_actionAdapter(Frame adaptee){

this.adaptee= adaptee;

}

public void actionPerformed(ActionEvent e){

adaptee.jButton1_actionPerformed(e);

}

}

class Bean{

String parameter= null;

JLabel show= null;

public JLabel getShow(){

return show;

}

public void setShow(JLabel show){

this.show= show;

}

public String getParameter(){

return parameter;

}

public void setParameter(String parameter){

this.parameter= parameter;

}

}

我只有一个打字母小游戏

一、如何用java实现一个贪吃蛇小游戏

1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

3、定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

4、食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

5、接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

6、开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

二、几个Java小游戏代码

package reduce;

import java.applet.Applet;

import java.applet.AudioClip;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Toolkit;

import javax.sound.sampled.AudioFileFormat;

import javax.sound.sampled.AudioSystem;

import javax.swing.JFrame;

import javax.swing.JPanel;

import java.awt.Rectangle;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JOptionPane;

import javax.swing.JSlider;

import javax.swing.JLabel;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.io.File;

import java.util.Vector;

public class Frame extends JFrame implements Runnable{

JPanel contentPane;

JPanel jPanel1= new JPanel();

JButton jButton1= new JButton();

JSlider jSlider1= new JSlider();

JLabel jLabel1= new JLabel();

JButton jButton2= new JButton();

JLabel jLabel2= new JLabel();

int count= 1, rapidity= 80;// count当前进行的个数, rapidity游标的位置

int zhengque= 0, cuowu= 0;

int rush[]={ 10,20,30};//游戏每关的个数可以自由添加.列{ 10,20,30,40,50}

int rush_count= 0;//记录关数

char list[]={'A','B','C','D','E','F','G','H','I','J','K','L',

'M','N','O','P','Q','R','S','T','U','V','W','X','Y',

'Z','1','2','3','4','5','6','7','8','9'};//随机出现的数字可以自由添加

Vector number= new Vector();

String paiduan="true";

AudioClip Musci_anjian, Music_shibai, Music_chenggong;

public Frame(){

try{

setDefaultCloseOperation(EXIT_ON_CLOSE);

//-----------------声音文件---------------------

Musci_anjian= Applet.newAudioClip(new File("sounds//anjian.wav")

.toURL());

Music_shibai= Applet.newAudioClip(new File("sounds//shibai.wav")

.toURL());

Music_chenggong= Applet.newAudioClip(new File(

"sounds//chenggong.wav").toURL());

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

jbInit();

} catch(Exception exception){

exception.printStackTrace();

}

}

/**

* Component initialization.

*

*@throws java.lang.Exception

*/

private void jbInit() throws Exception{

contentPane=(JPanel) getContentPane();

contentPane.setLayout(null);

setSize(new Dimension(588, 530));

setTitle("Frame Title");

jPanel1.setBorder(BorderFactory.createEtchedBorder());

jPanel1.setBounds(new Rectangle(4, 4, 573, 419));

jPanel1.setLayout(null);

jButton1.setBounds(new Rectangle(277, 442, 89, 31));

jButton1.setText("开始");

jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));

jSlider1.setBounds(new Rectangle(83, 448, 164, 21));

jSlider1.setMaximum(100);

jSlider1.setMinimum(1);

jSlider1.setValue(50);

jLabel1.setText("速度");

jLabel1.setBounds(new Rectangle(35, 451, 39, 18));

jButton2.setBounds(new Rectangle(408, 442, 89, 31));

jButton2.setText("结束");

jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));

jLabel2.setText("第一关:100个");

jLabel2.setBounds(new Rectangle(414, 473, 171, 21));

contentPane.add(jPanel1);

contentPane.add(jButton2);

contentPane.add(jButton1);

contentPane.add(jSlider1);

contentPane.add(jLabel1);

contentPane.add(jLabel2);

this.addKeyListener(new MyListener());

jButton1.addKeyListener(new MyListener());

jSlider1.addKeyListener(new MyListener());

jSlider1.addChangeListener(new ChangeListener(){

public void stateChanged(ChangeEvent e){

rapidity= jSlider1.getValue();

}

});

}

public void run(){

number.clear();

zhengque= 0;

cuowu= 0;

paiduan="true";

while(count<= rush[rush_count]){

try{

Thread t= new Thread(new Tthread());

t.start();

count+= 1;

Thread.sleep(1000+(int)(Math.random()* 2000));//生产下组停顿时间

//最快1快.最慢2秒

} catch(InterruptedException e){

e.printStackTrace();

}

}

while(true){//等待最后一个字符消失

if(number.size()== 0){

break;

}

}

if(zhengque== 0){//为了以后相除..如果全部正确或者错误就会出现错误.所以..

zhengque= 1;

}

if(cuowu== 0){

cuowu= 1;

}

if(paiduan.equals("true")){//判断是否是自然结束

if(zhengque/ cuowu>= 2){

JOptionPane.showMessageDialog(null,"恭喜你过关了");

rush_count+= 1;//自动加1关

if(rush_count< rush.length){

if(rapidity> 10){//当速度大于10的时候在-5提加速度.怕速度太快

java小游戏排行榜功能

rapidity-= 5;//速度自动减10毫秒

jSlider1.setValue(rapidity);//选择位置

}

Thread t= new Thread(this);

t.start();

} else{

JOptionPane.showMessageDialog(null,"牛B...你通关了..");

rush_count= 0;

count= 0;

}

} else{

JOptionPane.showMessageDialog(null,"请再接再励");

rush_count= 0;

count= 0;

}

} else{

rush_count= 0;

count= 0;

}

}

public void jButton1_actionPerformed(ActionEvent e){

Thread t= new Thread(this);

t.start();

}

public void jButton2_actionPerformed(ActionEvent e){

count= rush[rush_count]+ 1;

paiduan="flase";

}

class Tthread implements Runnable{

public void run(){

boolean fo= true;

int Y= 0, X= 0;

JLabel show= new JLabel();

show.setFont(new java.awt.Font("宋体", Font.PLAIN, 33));

jPanel1.add(show);

X= 10+(int)(Math.random()* 400);

String parameter= list[(int)(Math.random()* list.length)]+"";

Bean bean= new Bean();

bean.setParameter(parameter);

bean.setShow(show);

number.add(bean);

show.setText(parameter);

while(fo){

//---------------------数字下移--------------------

show.setBounds(new Rectangle(X, Y+= 2, 33, 33));

try{

Thread.sleep(rapidity);

} catch(InterruptedException e){

e.printStackTrace();

}

if(Y>= 419){

fo= false;

for(int i= number.size()- 1; i>= 0; i--){

Bean bn=((Bean) number.get(i));

if(parameter.equalsIgnoreCase(bn.getParameter())){

cuowu+= 1;

jLabel2.setText("正确:"+ zhengque+"个,错误:"+ cuowu

+"个");

number.removeElementAt(i);

Music_shibai.play();

break;

}

}

}

}

}

}

class MyListener extends KeyAdapter{

public void keyPressed(KeyEvent e){

String uu= e.getKeyChar()+"";

for(int i= 0; i< number.size(); i++){

Bean bean=((Bean) number.get(i));

if(uu.equalsIgnoreCase(bean.getParameter())){

zhengque+= 1;

number.removeElementAt(i);

bean.getShow().setVisible(false);

jLabel2.setText("正确:"+ zhengque+"个,错误:"+ cuowu+"个");

Music_chenggong.play();

break;

}

}

Musci_anjian.play();

}

}

public static void main(String[] args){

try{

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch(Exception exception){

exception.printStackTrace();

}

Frame frame= new Frame();

Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize= frame.getSize();

if(frameSize.height> screenSize.height){

frameSize.height= screenSize.height;

}

if(frameSize.width> screenSize.width){

frameSize.width= screenSize.width;

}

frame.setLocation((screenSize.width- frameSize.width)/ 2,

(screenSize.height- frameSize.height)/ 2);

frame.setVisible(true);

}

}

class Frame1_jButton2_actionAdapter implements ActionListener{

private Frame adaptee;

Frame1_jButton2_actionAdapter(Frame adaptee){

this.adaptee= adaptee;

}

public void actionPerformed(ActionEvent e){

adaptee.jButton2_actionPerformed(e);

}

}

class Frame1_jButton1_actionAdapter implements ActionListener{

private Frame adaptee;

Frame1_jButton1_actionAdapter(Frame adaptee){

this.adaptee= adaptee;

}

public void actionPerformed(ActionEvent e){

adaptee.jButton1_actionPerformed(e);

}

}

class Bean{

String parameter= null;

JLabel show= null;

public JLabel getShow(){

return show;

}

public void setShow(JLabel show){

this.show= show;

}

public String getParameter(){

return parameter;

}

public void setParameter(String parameter){

this.parameter= parameter;

}

}

我只有一个打字母小游戏

相关内容

热门资讯

十八禁游戏排行榜 一、十八禁游戏制作公司ILLUSIONILLUSION(イリュージョン)是日本株式会社Eye One...
steam手柄游戏排行榜 一、steam十大必玩手柄游戏列表:1、《真人快打11》《真人快打11》(Mortal Kombat...
h iphone游戏排行榜 各位老铁们好,相信很多人对h iphone游戏排行榜都不是特别的了解,因此呢,今天就来为大家分享下关...
日本好玩h游戏排行榜 一、日本安卓h性游戏下载.很无语有这么难谁告知!!!您好:成人色情游戏是国家明令禁止的游戏,正规的应...
steam游戏排行榜怎么查 一、steam游戏排行榜在哪里看steam游戏排行榜通过官方网站点击进入Steam官网查看。Stea...
hgame游戏排行榜 大家好,hgame游戏排行榜相信很多的网友都不是很明白,包括《怪异恐剧院》:令人惊艳的HGame,相...
美国app游戏排行榜 一、手游排行榜2023前十名手游排行榜2023前十名:《蛋仔派对》《桃源深处有人家》《泰拉瑞亚》《弹...
td游戏排行榜 一、2023好玩的td游戏好玩的td手游2023年,随着技术的不断发展,各种趣味性质的TD游戏也相继...
最新消消乐类的游戏排行榜 一、消消乐游戏排行榜消消乐游戏排行榜如下:《开心消消乐》、《宾果消消消》、《海滨消消乐》、《旋转消消...
变态版游戏盒子排行榜下载 一、十大变态游戏盒子排行榜今天小编要为大家带来的是十大变态游戏盒子排行榜,都是全网高人气的bt手游平...