java开发小游戏?java做小游戏什么水平
大家好,今天小编来为大家解答以下的问题,关于java开发小游戏,java做小游戏什么水平这个很多人还不知道,现在让我们一起来看看吧!
java做一些小游戏需要学什么
Java做这些小游戏,可以使用下面几种Java自带的图形界面框架
Awt适合内存较小,配置较低的嵌入式系统等,组件较少,性能好,资源消耗低.
Swing适合PC等,组件较丰富,内存占用较大,但是跨平台性优越
JavaFX这个是比较强大的框架了,组件比Swing更丰富,比如添加了日期选择组件, WebView组件,还支持3D和动画.并且多多媒体支持良好.但是相关资料比Swing等少
既然学过Java Web那么对网页编程还是有了解吧, HTML+CSS+JS也可以开发出小游戏,浏览器可以显示,放入JavaFX的WebView组件也可以显示出来
推荐使用JavaFX或者 Web,因为这两者都很好做到了分离. JavaFX也可以分离出FXML文件,CSS文件,Java文件.当然也可以采用最稳妥的Swing来开发,毕竟Swing的图书教程很多.
推荐书籍
<Java 2D游戏编程入门><Java游戏编程原理与实践教程>
<JavaFX游戏程式设计第三版>
其实游戏算法都一样,在Swing上好了弄透彻了,也可以轻松移植到JavaFX或者网页上
java小游戏源代码
介绍这个给你把...我空间还有很多..
importjava.applet.Applet;
importjava.applet.AudioClip;
importjava.awt.Dimension;
importjava.awt.Font;
importjava.awt.Toolkit;
importjavax.sound.sampled.AudioFileFormat;
importjavax.sound.sampled.AudioSystem;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjava.awt.Rectangle;
importjavax.swing.BorderFactory;
importjavax.swing.JButton;
importjavax.swing.JOptionPane;
importjavax.swing.JSlider;
importjavax.swing.JLabel;
importjavax.swing.SwingUtilities;
importjavax.swing.UIManager;
importjavax.swing.event.ChangeEvent;
importjavax.swing.event.ChangeListener;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjava.io.File;
importjava.util.Vector;
publicclassFrameextendsJFrameimplementsRunnable{
JPanelcontentPane;
JPaneljPanel1=newJPanel();
JButtonjButton1=newJButton();
JSliderjSlider1=newJSlider();
JLabeljLabel1=newJLabel();
JButtonjButton2=newJButton();
JLabeljLabel2=newJLabel();
intcount=1,rapidity=80;//count当前进行的个数,rapidity游标的位置
intzhengque=0,cuowu=0;
intrush[]={10,20,30};//游戏每关的个数可以自由添加.列{10,20,30,40,50}
intrush_count=0;//记录关数
charlist[]={'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'};//随机出现的数字可以自由添加
Vectornumber=newVector();
Stringpaiduan="true";
AudioClipMusci_anjian,Music_shibai,Music_chenggong;
publicFrame(){
try{
setDefaultCloseOperation(EXIT_ON_CLOSE);
//-----------------声音文件---------------------
Musci_anjian=Applet.newAudioClip(newFile("sounds//anjian.wav")
.toURL());
Music_shibai=Applet.newAudioClip(newFile("sounds//shibai.wav")
.toURL());
Music_chenggong=Applet.newAudioClip(newFile(
"sounds//chenggong.wav").toURL());
//---------------------------------------
jbInit();
}catch(Exceptionexception){
exception.printStackTrace();
}
}
/**
*Componentinitialization.
*
*@throwsjava.lang.Exception
*/
privatevoidjbInit()throwsException{
contentPane=(JPanel)getContentPane();
contentPane.setLayout(null);
setSize(newDimension(588,530));
setTitle("FrameTitle");
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(newRectangle(4,4,573,419));
jPanel1.setLayout(null);
jButton1.setBounds(newRectangle(277,442,89,31));
jButton1.setText("开始");
jButton1.addActionListener(newFrame1_jButton1_actionAdapter(this));
jSlider1.setBounds(newRectangle(83,448,164,21));
jSlider1.setMaximum(100);
jSlider1.setMinimum(1);
jSlider1.setValue(50);
jLabel1.setText("速度");
jLabel1.setBounds(newRectangle(35,451,39,18));
jButton2.setBounds(newRectangle(408,442,89,31));
jButton2.setText("结束");
jButton2.addActionListener(newFrame1_jButton2_actionAdapter(this));
jLabel2.setText("第一关:100个");
jLabel2.setBounds(newRectangle(414,473,171,21));
contentPane.add(jPanel1);
contentPane.add(jButton2);
contentPane.add(jButton1);
contentPane.add(jSlider1);
contentPane.add(jLabel1);
contentPane.add(jLabel2);
this.addKeyListener(newMyListener());
jButton1.addKeyListener(newMyListener());
jSlider1.addKeyListener(newMyListener());
jSlider1.addChangeListener(newChangeListener(){
publicvoidstateChanged(ChangeEvente){
rapidity=jSlider1.getValue();
}
});
}
publicvoidrun(){
number.clear();
zhengque=0;
cuowu=0;
paiduan="true";
while(count<=rush[rush_count]){
try{
Threadt=newThread(newTthread());
t.start();
count+=1;
Thread.sleep(1000+(int)(Math.random()*2000));//生产下组停顿时间
//最快1快.最慢2秒
}catch(InterruptedExceptione){
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);//选择位置
}
Threadt=newThread(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;
}
}
publicvoidjButton1_actionPerformed(ActionEvente){
Threadt=newThread(this);
t.start();
}
publicvoidjButton2_actionPerformed(ActionEvente){
count=rush[rush_count]+1;
paiduan="flase";
}
classTthreadimplementsRunnable{
publicvoidrun(){
booleanfo=true;
intY=0,X=0;
JLabelshow=newJLabel();
show.setFont(newjava.awt.Font("宋体",Font.PLAIN,33));
jPanel1.add(show);
X=10+(int)(Math.random()*400);
Stringparameter=list[(int)(Math.random()*list.length)]+"";
Beanbean=newBean();
bean.setParameter(parameter);
bean.setShow(show);
number.add(bean);
show.setText(parameter);
while(fo){
//---------------------数字下移--------------------
show.setBounds(newRectangle(X,Y+=2,33,33));
try{
Thread.sleep(rapidity);
}catch(InterruptedExceptione){
e.printStackTrace();
}
if(Y>=419){
fo=false;
for(inti=number.size()-1;i>=0;i--){
Beanbn=((Bean)number.get(i));
if(parameter.equalsIgnoreCase(bn.getParameter())){
cuowu+=1;
jLabel2.setText("正确:"+zhengque+"个,错误:"+cuowu
+"个");
number.removeElementAt(i);
Music_shibai.play();
break;
}
}
}
}
}
}
classMyListenerextendsKeyAdapter{
publicvoidkeyPressed(KeyEvente){
Stringuu=e.getKeyChar()+"";
for(inti=0;i<number.size();i++){
Beanbean=((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();
}
}
publicstaticvoidmain(String[]args){
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exceptionexception){
exception.printStackTrace();
}
Frameframe=newFrame();
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize=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);
}
}
classFrame1_jButton2_actionAdapterimplementsActionListener{
privateFrameadaptee;
Frame1_jButton2_actionAdapter(Frameadaptee){
this.adaptee=adaptee;
}
publicvoidactionPerformed(ActionEvente){
adaptee.jButton2_actionPerformed(e);
}
}
classFrame1_jButton1_actionAdapterimplementsActionListener{
privateFrameadaptee;
Frame1_jButton1_actionAdapter(Frameadaptee){
this.adaptee=adaptee;
}
publicvoidactionPerformed(ActionEvente){
adaptee.jButton1_actionPerformed(e);
}
}
classBean{
Stringparameter=null;
JLabelshow=null;
publicJLabelgetShow(){
returnshow;
}
publicvoidsetShow(JLabelshow){
this.show=show;
}
publicStringgetParameter(){
returnparameter;
}
publicvoidsetParameter(Stringparameter){
this.parameter=parameter;
}
}
java小游戏
按照题目要求,人拿完火柴后计算机自动拿火柴,判断胜利者。鼠标点击ok或者键盘按enter键即可提交人拿的火柴个数。图形界面如下,
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Random;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
public class game extends javax.swing.JFrame implements ActionListener{
private JPanel frame;
private JTextField pwd;
private JTextField jLabel1;
private JTextField jLabel2;
private JButton bntOk;
private JLabel l1;
private JLabel l2;
private JLabel l3;
int total;
public static void main(String[] args)
{
game ff=new game();
}
public game(){
initGUI();
Random r=new Random();
total=r.nextInt(51);
while(total<20){
total=r.nextInt(51);
}
jLabel2.setText(String.valueOf(total));
this.setSize(500, 500);
this.setLocation(300, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getRootPane().setDefaultButton(bntOk);
bntOk.addActionListener(this);
}
public void actionPerformed(java.awt.event.ActionEvent evt)
{
int a=Integer.parseInt(jLabel1.getText());
if((a>3)||(a==0)){
JOptionPane.showMessageDialog(game.this,"输入错误
请重新输入");
return;
}
total=total-a;
jLabel2.setText(String.valueOf(total));
if(total<=0){
JOptionPane.showMessageDialog(game.this,"恭喜你,胜利了!");
return;
}
Random r=new Random();
int b=r.nextInt(4);
while(b==0)
b=r.nextInt(4);
pwd.setText(String.valueOf(b));
total=total-b;
jLabel2.setText(String.valueOf(total));
if(total<=0){
JOptionPane.showMessageDialog(game.this,"很遗憾,你输了!");
}
}
private void initGUI(){
frame=new JPanel();
getContentPane().add(frame, BorderLayout.CENTER);
frame.setLayout(null);
bntOk=new JButton();
bntOk.setText("OK");
bntOk.setBounds(150, 200, 66, 30);
frame.add(bntOk);
jLabel2= new JTextField();
jLabel2.setBounds(150, 50, 100, 50);
frame.add(jLabel2);
l1=new JLabel();
l1.setText("火柴数量");
l1.setBounds(90, 50, 100, 50);
frame.add(l1);
jLabel1= new JTextField();
jLabel1.setText("");
jLabel1.setBounds(200,149, 77, 22);
frame.add(jLabel1);
l2=new JLabel();
l2.setText("我拿火柴");
l2.setBounds(100, 149, 77, 22);
frame.add(l2);
l3=new JLabel();
l3.setText("对方拿火柴");
l3.setBounds(100, 249, 77, 22);
frame.add(l3);
pwd= new JTextField();
pwd.setBounds(200, 249, 77, 22);
frame.add(pwd);
bntOk.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e1){
int a=Integer.parseInt(jLabel1.getText());
if((a>3)||(a==0)){
JOptionPane.showMessageDialog(game.this,"输入错误
请重新输入");
return;
}
total=total-a;
jLabel2.setText(String.valueOf(total));
if(total<=0){
jLabel2.setText("0");
JOptionPane.showMessageDialog(game.this,"恭喜你,胜利了!");
return;
}
Random r=new Random();
int b=r.nextInt(4);
while(b==0)
b=r.nextInt(4);
pwd.setText(String.valueOf(b));
total=total-b;
jLabel2.setText(String.valueOf(total));
if(total<=0){
JOptionPane.showMessageDialog(game.this,"很遗憾,你输了!");
}
}
}
);
}
}
文章到此结束,如果本次分享的java开发小游戏和java做小游戏什么水平的问题解决了您的问题,那么我们由衷的感到高兴!