java课程设计小游戏(如何用java实现一个贪吃蛇小游戏)

本文目录
- 如何用java实现一个贪吃蛇小游戏
- 求一个“JAVA拿火柴小游戏”的程序要求如下!!!!!!!跪求!!!!!
- 关于Java 中,我们的作业是一个 机战的小游戏,怎么去实现一个 子弹击中的问题,用代码解释
- java做一些小游戏需要学什么
如何用java实现一个贪吃蛇小游戏
1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。
2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。
3、定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。
4、食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。
5、接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。
6、开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。
求一个“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(100);
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,"输入错误\n请重新输入");
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,"输入错误\n请重新输入");
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 中,我们的作业是一个 机战的小游戏,怎么去实现一个 子弹击中的问题,用代码解释
这个是碰撞检测算法。
简单说,你绘制的对象,比如飞机A,子弹B,都是图形,有大小、有形状的,这个形状的边角都有坐标点。
//B的矩形右侧坐标
B.RightX;
//A的矩形左侧坐标
A.LeftX;
假定它们图形都是矩形,子弹B从左侧向右侧平移,与飞机A“碰撞”,碰撞的条件,可以认为是子弹B的最右侧坐标大于等于飞机A的所在的左侧坐标。
if(B.RightX 》= A.LeftX)
游戏循环中不断进行这样的检测,一旦检测到碰撞成立时就认为是击中了。
进一步,并不是每个图形都是规则的矩形或者圆形,这个时候,你就要为图形自己定义一个碰撞检测图形(比如一个合适大小的圆形,大小刚好可以包裹你的对象)这个形状的坐标与对象运动关联,同步改变。通过这个碰撞检测的图形的坐标是否重合来判断是否碰撞。
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或者网页上

更多文章:
抖音小游戏帽子先生大冒险攻略(帽子先生大冒险第16关钥匙在哪)
2026年9月24日 09:00









