/**
游戏玩家显示类
Download by http://www.codefans.net
**/
package game.multiplayer;
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
public class PlayerScreen
extends Canvas
implements CommandListener {
//UDP服务器连接串
String url = "datagram://bji18nln1:5188";
//加入游戏命令对象
Command attendGame = null;
//当前玩家命令信息变量
String playerCmd = null;
String playerInfo = null;
String currentPlayer = null;
//游戏图片对象
Image boxBody = null;
Image enemy = null;
Image effect = null;
Image backGround = null;
Image winImage = null;
Image titleImage = null;
SoundPlayer soundPlayer = new SoundPlayer();
//游戏图片长度与宽度变量
int width = 24, height = 41;
//游戏图片显示区域的索引值
int widthIndex = 1, heightIndex = 1;
//判断是否为搏击状态
boolean isPressedHitKey = false;
// 构造器
public PlayerScreen(PlayerMIDlet playerMIDlet) {
this.playerMIDlet = playerMIDlet;
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//组件初始化
private void jbInit() throws Exception {
setCommandListener(this);
//添加命令对象
addCommand(new Command("退出游戏", Command.EXIT, 1));
attendGame = new Command("加入游戏", Command.OK, 1);
addCommand(attendGame);
//创建装载图片
try {
boxBody = Image.createImage("/imgs/charac.png");
enemy = Image.createImage("/imgs/enemy.png");
effect = Image.createImage("/imgs/effect.png");
backGround = Image.createImage("/imgs/bg.png");
winImage = Image.createImage("/imgs/win.png");
titleImage = Image.createImage("/imgs/title.png");
}
catch (IOException ex) {
ex.printStackTrace();
}
//启动查询线程
start();
}
//启动查询线程方法
public void start() {
new java.lang.Thread(new UDPListener()).start();
}
//绘图方法
public void paint(Graphics g) {
//清除屏幕
ScreenDrawer.clearScreen(g, getWidth(), getHeight());
//是否击中标志
boolean hitedFlag = false;
//是否出击标志
boolean isHit = false;
//是否为当前用户出击标志
boolean isCurrentUserHit = false;
if (playerInfo != null) {
//绘制背景图片
drawBackGround(g);
//获取积分信息串
int scopeIndex = playerInfo.indexOf("?");
String scopeString = playerInfo.substring(scopeIndex + 1);
int scope = scopeString.indexOf(",");
String player1Scope = scopeString.substring(0, scope);
String player2Scope = scopeString.substring(scope + 1);
//获取命令信息串
String playerInfoandCmd = playerInfo.substring(0, scopeIndex);
int cmdIndex = playerInfoandCmd.indexOf(":");
String playerMsg = playerInfoandCmd.substring(0, cmdIndex);
String cmdInfo = playerInfoandCmd.substring(cmdIndex + 1);
//获取player的当前坐标
int index1 = playerMsg.indexOf(",");
int index2 = cmdInfo.indexOf(",");
int player1X = Integer.parseInt(playerMsg.substring(0, index1));
int player2X = Integer.parseInt(playerMsg.substring(index1 + 1));
//绘制player1
if (cmdInfo.substring(0, index2).equals("go")) {
ScreenDrawer.drawImage(g, boxBody,
player1X,
97, width, height, widthIndex, heightIndex, true);
}
else if (cmdInfo.substring(0, index2).equals("hit")) {
ScreenDrawer.drawImage(g, boxBody,
player1X,
97, 39, 41, 4, 2, true);
isHit = true;
if ( (player1X + 34) >= player2X) {
hitedFlag = true;
//判断是当前用户击中对方
if (currentPlayer.equals("player1")) {
isCurrentUserHit = true;
}
}
}
//绘制player2
if (cmdInfo.substring(index2 + 1).equals("go")) {
ScreenDrawer.drawImage(g, enemy,
player2X,
97, width, height, widthIndex, heightIndex, true);
}
else if (cmdInfo.substring(index2 + 1).equals("hit")) {
ScreenDrawer.drawImage(g, enemy,
player2X-10,
97, 37, 41, 1,3, true);
isHit = true;
if ( (player1X + 34) >= player2X) {
//判断是当前用户击中对方
if (currentPlayer.equals("player2")) {
isCurrentUserHit = true;
}
hitedFlag = true;
}
}
//如果击中对方则绘制效果图片
if (hitedFlag) {
ScreenDrawer.drawImage(g, effect, (player2X - effect.getWidth() / 2),
102);
if (isCurrentUserHit) {
if (isPressedHitKey) {
sendCmd("info", "scope");
isPressedHitKey = false;
}
}
//播放击中音乐
soundPlayer.play("hited");
delay(50);
}
else if (isHit) {
delay(50);
sendCmd("info", "pause");
}
//显示玩家积分
drawScope(g,cmdInfo.substring(0, index2), cmdInfo.substring(index2 + 1),player1Scope, player2Scope);
if (player1Scope.equals("100") && currentPlayer.equals("player1")) {
showWinInfo(g, "你赢了!");
}
if (player1Scope.equals("100") && currentPlayer.equals("player2")) {
showFailureInfo(g, "你输了!");
}
if (player2Scope.equals("100") && currentPlayer.equals("player2")) {
showWinInfo(g, "你赢了!");
}
if (player2Scope.equals("100") && currentPlayer.equals("player1")) {
showFailureInfo(g, "你输了!");
}
//回收系统垃圾内存
System.gc();
}else {
//绘制标题
ScreenDrawer.drawImage(g, titleImage, (getWidth() - titleImage.getWidth()) / 2,
(getHeight()-titleImage.getHeight())/2);
}
}
//显示最终获胜信息
private void showWinInfo(Graphics g, String winString) {
ScreenDrawer.clearScreen(g, getWidth(), getHeight());
drawBackGround(g);
ScreenDrawer.drawString(g,
(getWidth() - winString.length() * Font.SIZE_LARGE) /
2, 80, winString);
ScreenDrawer.drawImage(g, winImage, (getWidth() - winImage.getWidth()) / 2,
100);
delay(3000);
reset();
}
//显示失败信息
private void showFailureInfo(Graphics g, String failureString) {
ScreenDrawer.clearScreen(g, getWidth(), getHeight());
drawBackGround(g);
ScreenDrawer.drawString(g,
(getWidth() - failureString.length() * Font.SIZE_LARGE) /
2, 80, failureString);
delay(3000);
reset();
}
//绘制积分
private void drawScope(Graphics g,String player1State,String player2State, String player1Scope, String player2Scope) {
if (!player1State.equals("null")) {
ScreenDrawer.drawString(g, 10, 80, "积分: " + player1Scope);
}
if (!player2State.equals("null")) {
ScreenDrawer.drawString(g, 140, 80, "积分: " + player2Scope);
}
}
//绘制背景
private void drawBackGround(Graphics g) {
if (backGround != null) {
ScreenDrawer.drawImage(g, backGround,
(getWidth() - backGround.getWidth()) / 2, 0);
ScreenDrawer.drawImage(g, backGround,
(getWidth() - backGround.getWidth()) / 2,
getHeight() - 12,
backGround.getWidth(), backGround.getHeight() - 12,
1, 2, true);
}
}
//延时方法
private void delay(int i) {
try {
Thread.sleep(i);
}
catch (InterruptedException ex) {
}
}
//UDP数据发
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java的一款Java网络格斗游戏源码.zip
共15个文件
png:6个
java:5个
class:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 180 浏览量
2023-06-17
01:18:55
上传
评论
收藏 84KB ZIP 举报
温馨提示
基于Java的一款Java网络格斗游戏源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的一款Java网络格斗游戏源码.zip (15个子文件)
codefans.net
NetGame
GameServer
src
game
multiplayer
GameServer.java 8KB
res
bin
game
multiplayer
GameServer.class 3KB
GameServer$UDPRequestHandler.class 4KB
PlayerMIDlet
src
game
multiplayer
PlayerScreen.java 12KB
PlayerMIDlet.java 749B
ScreenDrawer.java 2KB
SoundPlayer.java 1KB
res
effect.png 349B
title.png 6KB
win.png 2KB
bg.png 4KB
charac.png 8KB
enemy.png 7KB
bin
PlayerMIDlet.jad 183B
PlayerMIDlet.jar 42KB
共 15 条
- 1
资源评论
快乐无限出发
- 粉丝: 1131
- 资源: 7270
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功