package com.github.ljkgpxs.scenes;
import static java.lang.Thread.sleep;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.imageio.ImageIO;
import javax.swing.*;
import com.github.ljkgpxs.model.Animator;
import com.github.ljkgpxs.model.Position;
import com.github.ljkgpxs.model.Sprite;
import com.github.ljkgpxs.model.action.Action;
import com.github.ljkgpxs.model.action.FlyAction;
import com.github.ljkgpxs.model.action.ScaleAction;
import com.github.ljkgpxs.networks.ScoreItem;
import com.github.ljkgpxs.physics.PhysicsBody;
import com.github.ljkgpxs.physics.shape.RectangleShape;
import com.github.ljkgpxs.scenes.core.Render;
import com.github.ljkgpxs.utils.AudioPlay;
public class ResultScene extends Render implements MouseListener {
private List<ScoreItem> mUserTime;
private int mRunSpeed = 1;
private Screen mScreen;
private List<String> mResult;
private final static int WINDOW_WIDTH = 1280;
private final static int WINDOW_HEIGHT = 720;
private boolean mBoardLoaded = false;
private boolean mIsOver = false;
public ResultScene(List<ScoreItem> userTime) {
mUserTime = userTime;
mScreen = new Screen();
mResult = new CopyOnWriteArrayList<>();
userTime.sort(Comparator.comparing(scoreItem -> scoreItem.time));
this.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setUndecorated(true);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.add(mScreen);
this.setVisible(true);
this.addMouseListener(this);
new Thread(() -> {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true) {
if (mIsOver) {
break;
}
List<Sprite> sprites = new CopyOnWriteArrayList<>();
for (int i = 0; i < 9; i++) {
Sprite s = new Fireworks();
sprites.add(s);
addSprite(s);
}
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 9; i++) {
removeSprite(sprites.get(i));
}
sprites.clear();
}
}).start();
addSprite(new ScoreBoard());
AudioPlay.playMusic("/resources/sounds/bgm3.wav", 10);
new Thread(() -> {
while (true) {
if (mIsOver) {
dispose();
break;
}
repaint();
if (System.getProperty("os.name").equalsIgnoreCase("linux")) {
Toolkit.getDefaultToolkit().sync();
}
try {
sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(() -> {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < mUserTime.size(); i++) {
try {
if (mIsOver) {
return;
}
sleep(500);
StringBuffer buffer = new StringBuffer("");
mResult.add(buffer.toString());
buffer.append("第");
mResult.set(i, buffer.toString());
sleep(400);
buffer.append(i + 1);
buffer.append("名");
mResult.set(i, buffer.toString());
sleep(400);
buffer.append("用");
mResult.set(i, buffer.toString());
sleep(400);
buffer.append("时");
mResult.set(i, buffer.toString());
sleep(400);
buffer.append(": ");
mResult.set(i, buffer.toString());
sleep(1000);
buffer.append(String.format("%7.2f", mUserTime.get(i).time / 1000.0));
mResult.set(i, buffer.toString());
sleep(400);
buffer.append("秒");
sleep(400);
buffer.append(" ").append(mUserTime.get(i).tag);
mResult.set(i, buffer.toString());
sleep(400);
if (i == 0) {
addSprite(new Blink());
addSprite(new GoldMedal());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void mouseClicked(MouseEvent mouseEvent) {
mIsOver = true;
AudioPlay.stopAll();
new MenuScene().start();
}
@Override
public void mousePressed(MouseEvent mouseEvent) {
}
@Override
public void mouseReleased(MouseEvent mouseEvent) {
}
@Override
public void mouseEntered(MouseEvent mouseEvent) {
}
@Override
public void mouseExited(MouseEvent mouseEvent) {
}
private void removeSprite(Sprite s) {
mSprites.remove(s);
}
class Screen extends JPanel {
private Image mBackImage;
private Image mLandImage;
private Image mGoldMedal;
private int mLandLocation = 0;
Screen() {
try {
mBackImage = ImageIO.read(this.getClass().getResource("/resources/bg_day.png"));
mLandImage = ImageIO.read(this.getClass().getResource("/resources/land.png"));
mGoldMedal = ImageIO.read(this.getClass().getResource("/resources/medals_1.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
mLandLocation -= mRunSpeed;
if (-mLandLocation >= WINDOW_WIDTH) {
mLandLocation = 0;
}
graphics.drawImage(mBackImage,
0, 0,
WINDOW_WIDTH, WINDOW_HEIGHT,
null);
graphics.drawImage(mLandImage,
mLandLocation, WINDOW_HEIGHT - mLandImage.getHeight(null),
WINDOW_WIDTH, mLandImage.getHeight(null),
null);
graphics.drawImage(mLandImage,
mLandLocation + WINDOW_WIDTH,
WINDOW_HEIGHT - mLandImage.getHeight(null),
WINDOW_WIDTH, mLandImage.getHeight(null),
null);
for (Sprite s : mSprites) {
if (s.hasAction()) {
for (Action a : s.getActions()) {
if (a instanceof ScaleAction) {
Position p = new Position(s.getPhysicsBody().getShape().getWidth(),
s.getPhysicsBody().getShape().getWidth());
p = (Position) a.getNext(p);
s.getPhysicsBody().setShape(new RectangleShape(p.x, p.y));
} else if (a instanceof FlyAction) {
Position p = s.getPhysicsBody().getPosition();
if (s.getPhysicsBody().getPosition() == null) {
没有合适的资源?快使用搜索试试~ 我知道了~
一个支持多人游玩的Flappy_Bird变种游戏, Java编写.zip
共170个文件
png:92个
java:51个
wav:11个
需积分: 5 0 下载量 84 浏览量
2023-08-05
22:51:20
上传
评论
收藏 23.15MB ZIP 举报
温馨提示
用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。
资源推荐
资源详情
资源评论
收起资源包目录
一个支持多人游玩的Flappy_Bird变种游戏, Java编写.zip (170个子文件)
proguard.conf 337B
number_score_font.fnt 1KB
number_font.fnt 1KB
game_over.gif 5KB
.gitignore 739B
ResultScene.java 12KB
GameScene.java 12KB
Player.java 11KB
Client.java 8KB
MenuScene.java 8KB
Server.java 7KB
World.java 7KB
RoomScene.java 6KB
TestRender.java 4KB
TestSprite.java 4KB
PhysicsBody.java 3KB
Map.java 3KB
ServerBroadcast.java 3KB
GunWeapon.java 2KB
FlyAction.java 2KB
FireWeapon.java 2KB
Sprite.java 2KB
AudioPlay.java 1KB
RemotePlayer.java 1KB
ServerScanner.java 1KB
Animator.java 1KB
Pipe.java 1KB
Weapon.java 1KB
TestNetwork.java 1022B
EndFlag.java 1012B
AirWall.java 848B
MMath.java 793B
UnlimitedWeapon.java 762B
Position.java 709B
IpPort.java 678B
RectangleShape.java 602B
Render.java 595B
CircleShape.java 554B
TestSounds.java 539B
TestScene.java 529B
Vector.java 494B
TestBroadcast.java 480B
ScaleAction.java 439B
Action.java 408B
OnCollideListener.java 391B
NetMessage.java 342B
RemotePlayerData.java 318B
ScoreItem.java 294B
GameMain.java 184B
OnWeaponBulletAddListener.java 170B
BaseShape.java 152B
OnGameStateListener.java 136B
OnPlayerJoinedListener.java 119B
BroadcastMessage.java 105B
WeaponType.java 105B
SpriteType.java 82B
bgm1.mp3 1.19MB
bgm2.mp3 488KB
bgm3.mp3 349KB
wind.mp3 150KB
fly.mp3 83KB
fire.mp3 9KB
gun.mp3 7KB
fly.ogg 8KB
gun_bullet.png 1.71MB
fire.png 265KB
logo.png 201KB
bubble.png 73KB
gun.png 65KB
fireworks7.png 57KB
fireworks0.png 56KB
fireworks4.png 55KB
fireworks6.png 52KB
speed_up.png 51KB
fireworks5.png 50KB
fireworks8.png 48KB
fireworks3.png 48KB
fireworks1.png 41KB
fireworks2.png 40KB
weapon_slot.png 35KB
button_create_room.png 23KB
pipe_up.png 22KB
pipe_down.png 22KB
pipe2_up.png 21KB
button_join_room.png 21KB
help.png 15KB
end_flag.png 15KB
button_quit.png 15KB
skill_loading.png 14KB
bg_day.png 11KB
star8.png 8KB
star7.png 8KB
star1.png 8KB
star6.png 8KB
star3.png 8KB
star9.png 8KB
star2.png 8KB
star5.png 8KB
star4.png 8KB
title.png 8KB
共 170 条
- 1
- 2
资源评论
c++服务器开发
- 粉丝: 3045
- 资源: 4463
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
- IMG_0437.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功