import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.MIDletStateChangeException;
public class KOFGC extends GameCanvas implements Runnable,CommandListener {
private KOF kof;
private Graphics g;
private Random rd=new Random();//随机数
private Command back=new Command("返回",Command.BACK,1);//返回按纽
private int menuindex=0;//菜单的层级
private int toll_gate;//场景状态
private int menuAction;//菜单的选择按扭
private int controlAction;//按键设置按扭
private Image menu[]=new Image[8];//菜单图片
private Sprite scj;//场景图片精灵
private boolean flag;//游戏开始的标志
private boolean controlflag;//控制标志
private boolean controlling;//是否为控制状态
private boolean alive;//游戏进行标志
private boolean go;//游戏开始标志
private boolean npcpress;//npc的选择
private int time;//动画时间控制
private int width;//宽度
private int height;//高度
private int heroselect;//主角选择
private int heroType;//主角类型
private int npcType[]=new int[3];//npc类型
private int cjnum;//场景数量
private Image herobody[]=new Image[4];//主角身体图片
private Image heroheads[]=new Image[4];//主角头像图片
private int round;//比赛局数
private LayerManager lm=new LayerManager();//图层管理器
private int timeout;//比赛时间结束
private boolean canPress;//可按键
private String GameA="3";//游戏A键
private String GameB="9";
private personSprite hero;//主角精灵
private personSprite npc;
private Sprite npcs;//npc头像
private Image roundImage;//场景图片
private int heroround;//主角胜利场数
private int npcround;//npc胜利场数
private int deadtime;//死亡时间
private int press[]=new int[20];//按键记录
private int pressnum;//按键数
private int specialAttack0[]={5,4,3};//表示按下了"下—前下—前",//注意最后的数字3为最后按下的键
private int specialAttack1[]={1,2,3};//表示按下了"下—后下—后",
private int specialAttack2[]={4,3,5};//表示按下了"前下—下—前",
public static int sleeptime=50;//每侦睡眠时间
private String cj[]={"/cj1.wav","/cj2.wav","/cj3.wav"};//场景音乐
private String personsp[]={"/kyo.png","/athena.png","/bzhw.png","/terry.png"};//角色图片
private boolean timestop;//时间是否结束
private int victor;//胜利
private Thread gt=new Thread(this);//线程
private Image bgjg;//被攻击的闪光
private Image fzdh;//防住的闪光
private Sprite bgj;//被攻击精灵
private Sprite fz;//防住的精灵
private boolean bd;
private boolean canfz;//能防住
protected KOFGC(KOF kof,boolean arg0) {
super(arg0);
this.kof=kof;
g=this.getGraphics();
loadImage();
setFullScreenMode(true);
width=getWidth();
height=getHeight();
init();
gt.start();
}
protected void init() {
flag=false;
alive=false;
go=false;
heroselect=35;
timeout=99;
round=0;
menuAction=15;
controlAction=90;
controlflag=false;
time=0;
menuindex=0;
canPress=true;
}
public void loadImage() {//装载游戏图片
Image cj=null;
Image temp=null;
try {
switch(toll_gate) {
case 0:
menu[0]=Image.createImage("/menu.png");
temp=Image.createImage("/menu2.png");
menu[1]=Image.createImage(temp,0,0,110,33,0);
menu[2]=Image.createImage(temp,0,33,110,33,0);
temp=Image.createImage("/menu1.png");
for(int i=0;i<5;i++) {
menu[i+3]=Image.createImage(temp,0,13*i,57,13,0);
}
break;
case 1:
cj=Image.createImage("/splash.png");
break;
case 2:
cj=Image.createImage("/playericons.png");
herobody[0]=Image.createImage("/kyo-body.png");
herobody[1]=Image.createImage("/athena-body.png");
herobody[2]=Image.createImage("/bzhw-body.png");
herobody[3]=Image.createImage("/terry-body.png");
bgjg=Image.createImage("/bgjg.png");
fzdh=Image.createImage("/fz.png");
fz=new Sprite(fzdh,50,50);
bgj=new Sprite(bgjg,50,50);
break;
case 3:
cj=Image.createImage("/bg.png");
temp=Image.createImage("/playericons.png");
for(int i=0;i<4;i++)
heroheads[i]=Image.createImage(temp,i*24,0,24,24,0);
break;
case 4:
cj=Image.createImage("/bg2.png");
temp=Image.createImage("/playericons.png");
for(int i=0;i<4;i++)
heroheads[i]=Image.createImage(temp,i*24,0,24,24,0);
break;
case 5:
cj=Image.createImage("/bg3.png");
temp=Image.createImage("/playericons.png");
for(int i=0;i<4;i++)
heroheads[i]=Image.createImage(temp,i*24,0,24,24,0);
break;
}
if(toll_gate!=0&&toll_gate!=6)
scj=new Sprite(cj);
System.gc();
} catch (IOException e) {
e.printStackTrace();
}
}
public void commandAction(Command c,Displayable d) {//左右软键按键事件
if(c==back)
{
this.removeCommand(back);
for(int i=0;i<5;i++) {
kof.stopPlay(i);
}
lm=new LayerManager();
System.gc();
init();
}
}
public void render() {
switch(menuindex) {//主画面层级
case 0:
drawMenu();//画菜单
break;
case 1:
startGame();//开始游戏
break;
case 2:
drawControl();//画按键设置
break;
case 3:
drawHelp();//画帮助
break;
case 4:
drawHighPoint();//画高分版
break;
case 5:
gameExit();//退出游戏
break;
case 6:
startscreen();//画开始动画
break;
case 7:
gameReady();//画准备动画
break;
case 8:
cjReady();//画场景的渐入渐出
break;
case 9:
drawresult();//画游戏结束画面
break;
case 10:
drawchiose();//画选人动画
}
if(menuindex!=0&&menuindex!=5&&menuindex!=-1) {
addCommand(back);
setCommandListener(this);
}
}
public void drawchiose() {
if(time==0){
toll_gate=2;
loadImage();
} else if(time>0&&time<16) {
g.setColor(0);
g.fillRect(0,0,(width/15)*time,height);
} else if(time==16) {
g.setColor(0);
g.fillRect(0,0,width,height);
scj.setPosition(35,30);
} else if(time>16&&time<32) {
g.setColor(0);
scj.paint(g);
g.drawImage(herobody[heroType],36,80,0);
g.fillRect(0,0,(width/15)*(31-time),height);
} else if(time>=32) {
canPress=true;
alive=false;
if(heroselect==35)
heroType=0;
else if(heroselect==59)
heroType=1;
else if(heroselect==83)
heroType=2;
else if(heroselect==107)
heroType=3;
else if(heroselect==131) {
int temp=heroType;
do {
heroType=Math.abs(rd.nextInt()%4);
}
while(temp==heroType);
}
g.setColor(0);
g.fillRect(0,0,width,height);
scj.paint(g);
g.setColor(255,0,0);
g.drawRect(heroselect,30,24,24);
g.drawImage(herobody[heroType],36,80,0);
g.setColor(255,255,0);
g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_MEDIUM));
switch(heroType){
case 0:
g.drawString("KYO",95,80,0);
g.drawString("绝招1:",95,95,0);
g.drawString("下-前下-前",95,110,0);
g.drawString("绝招2:",95,125,0);
g.drawString("前-下-前下",95,140,0);
break;
case 1:
g.drawString("ATHENA",95,80,0);
g.drawString("绝招1:",95,95,0);
g.drawString("前-下-前下",95,110,0);
g.drawString("绝招2:",95,125,0);
g.drawString("下-后下-后",95,140,0);
break;
case 2:
g.drawString("BZHW",95,80,0);
g.drawString("绝招1:",95,95,0);
g.drawString("下-后下-后",95,110,0);
g.drawString("绝招2:",95,125,0);
g.drawString("下-前下-前",95,140,0);
break;
case 3:
g.drawString("TERRY",95,80,0);
g.drawString("绝招1:",95,95,0);
g.drawString("下-后下-后",95,110,0);
g.drawString("绝招2:",95,125,0);
g.drawString("前-下-前下",95,140,0);
break;
}
}
time++;
}
public void drawresult() {
if(time==0){
g.setColor(255,255,0);
g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,Font.SIZE_L
没有合适的资源?快使用搜索试试~ 我知道了~
KOF.rar_KOF_java 游戏
共52个文件
wav:27个
png:21个
java:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 170 浏览量
2022-09-14
16:23:02
上传
评论
收藏 284KB RAR 举报
温馨提示
这是一款很有趣的牌类游戏,首先是不用联网,再说里面打牌声乐和程序都很好,整个游戏很完整,有顺畅
资源推荐
资源详情
资源评论
收起资源包目录
KOF.rar (52个子文件)
res
athena.png 6KB
shaobo.wav 4KB
shaosi.wav 9KB
KO.wav 5KB
bzhw-body.png 5KB
perfect.wav 4KB
bg2.png 6KB
BulletPoint.png 573B
splash.png 2KB
trfeitui.wav 6KB
dbi_colour.png 372B
athena-body.png 5KB
trquan.wav 3KB
terry.png 7KB
logo1.png 9KB
trbo.wav 6KB
menu2.png 165B
trbaoqi.wav 4KB
fz.png 5KB
Abaoqi.wav 43KB
playericons.png 968B
bzhw.png 7KB
bg3.png 6KB
caojinen.wav 11KB
bg.png 7KB
bgjg.png 4KB
kyo-body.png 4KB
ACT.wav 5KB
ready.wav 10KB
cj2.wav 18KB
AD.wav 8KB
shaobao.wav 4KB
kyo.png 7KB
caochongtian.wav 23KB
Abo.wav 5KB
shaochongtian.wav 7KB
terry-body.png 5KB
menu.png 699B
caobaoqi.wav 6KB
AQ.wav 3KB
trsi.wav 9KB
menu1.png 4KB
cj1.wav 15KB
cj3.wav 6KB
shaoquan.wav 3KB
caosi.wav 16KB
kaichang.wav 25KB
caoquan.wav 3KB
src
Fading.java 2KB
KOF.java 4KB
personSprite.java 10KB
KOFGC.java 33KB
共 52 条
- 1
资源评论
邓凌佳
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功