用JAVA写游戏的酸爽,你可曾体会到
需求分析
实现玩家飞机的移动,子弹的发射
飞机和子弹的碰撞判定 出界判定
敌机的添加,移动和子弹的发射
分数与生命功能
碰撞时动态爆炸效果的绘制
BOSS类独特的移动和子弹移动方式
可关闭开启的音乐与音效
难度选择.地狱模式敌机能够左右摇摆
联机单机模式选择
排行榜和账号相关功能
完成的类如下
总体思路
JAVA的动态游戏界面都离不开这么一个核心步骤:继承jpanel,重写paint方法,在线程中调用repaint,便实现了动态界面的绘制.
源代码太长,想查看源码移步Github: https://github.com/2293256828/Thunder
这里关键说一下联机思路,其实很简单,就是P1玩家点击创建房间时,开一个端口号,P2玩家输入端口号,两者建立连接后就开始进入游戏界面的绘制,游戏中敲击键盘移动射击的同时传给对方一个操作代号,通过这个代号,就实现了另一架飞机的移动.下面给出部分代码:
//p1玩家的ui,socket联机
public void gameui(Socket s, int rand, int difficulty) {
if (difficulty == 1) {
HellPlayui playui;//playui就是继承jpanel重写paint方法,调用repaint的类
playui = new HellPlayui(rand, sound_effect);//rand用于地图的随机性,sound_effect是音效设置
//以下代码是联机实现,简单的说,就是队友按一下键盘,就会用socket传过来一个代号,你读取这个代号同时就移动他的飞机.
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
//游戏结束的判定,上传分数,两边的用户名以及总成绩
if (playui.i == 4) {
Socket socket = new Socket("127.0.0.1", 111);
socket.getOutputStream().write(2);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());