拳皇这个游戏相信大家都不陌生吧,我也是刚学java,还不怎么会GUI和一些组件的使用,就写了一个文字版,什么叫文字版呢,就是我通过循环以及判断模拟出拳皇两名玩家对战的情况,通过简单的循环判断实现该程序,我们假定两个玩家的初始生命值为100,每一次的攻击是产生的5-15的随机数,我们可以假定攻击<10就判断为玩家进行一次普攻,攻击>10意味着玩家开大,我在每一次进行攻击或者时开始对战以及结果都插入了相应的音效,插入音效文件在java中不能使用.mp3后缀名的,需要将.mp3格式转化为默认的.wav格式,下一个格式工厂即可。把音频文件放在你的项目的sourse文件夹就可以了,复制粘贴。
File sound1 = new File("sounds/Iori Yagami.wav");
AudioClip sound_choose = Applet.newAudioClip(sound1.toURL());
sound_choose.play(); //开始播放音乐
sound_choose.stop();//停止播放音乐
这些在API帮助文档可以看到
源代码如下:
import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;
import java.net.MalformedURLException;
import java.util.*;
public class EasyQuanHuangGame {
public static void main(String[] args) throws MalformedURLException, InterruptedException {
// TODO 自动生成的方法存根
Scanner input = new Scanner(System.in);
int HP1 = 100; //玩家1基础生命值
int HP2 = 100; //玩家2基础生命值
int attack1 = 0; //玩家1的初始攻击值
int attack2 = 0; //玩家2的初始攻击值
/***********模拟选人**************/
File sound1 = new File("sounds/Iori Yagami.wav");
AudioClip sound_choose = Applet.newAudioClip(sound1.toURL());
sound_choose.play(); //开始播放音乐
System.out.println("请玩家1选择游戏角色");
String game1 = input.next();
String ComputerName = "草稚京";
System.out.println("玩家1选择了"+game1+"!");
System.out.println(game1+" VS "+ComputerName);
sound_choose.stop(); //停止播放音乐
Thread.sleep(1000); //等待1秒在进行
/***********模拟对战**************/
System.out.println("游戏开始!");
File sound5 = new File("sounds/round1 go.wav");
sound_choose = Applet.newAudioClip(sound5.toURL());
sound_choose.play();
Thread.sleep(3000);
sound_choose.stop();
while(HP1>0&&HP2>0) {
attack1 = (int)((Math.random()*10000)%11+5); //每次玩家1攻击造成的伤害5-15
attack2 = (int)((Math.random()*10000)%11+5); //每次玩家2攻击造成的伤害5-15
if(attack1<10&&attack2<10) {
/***********玩家1先进行普攻**************/
HP2-=attack1;
System.out.println("玩家1进行普攻对玩家2造成伤害:"+attack1);
File sound6 = new File("sounds/普攻1.wav");
sound_choose = Applet.newAudioClip(sound6.toURL());
sound_choose.play();
Thread.sleep(1000);
sound_choose.stop();
System.out.println("玩家2血量值:"+HP2);
if(HP2<0) //避免极端情况比如两个玩家生命值很相近3,5.
{
break;
}
/***********玩家2进行普攻**************/
HP1-=attack2;
System.out.println("玩家2进行普攻对玩家1造成的伤害:"+attack2);
File sound7 = new File("sounds/普攻1.wav");
sound_choose = Applet.newAudioClip(sound7.toURL());
sound_choose.play();
Thread.sleep(1000);
sound_choose.stop();
System.out.println("玩家1血量值:"+HP1);
if(HP1<0) {
break;
}
}
if(attack1>10&&attack2>10)
{
/***********玩家1开大**************/
HP2-=attack1;
System.out.println(game1+" 大招 "+ComputerName);
System.out.println("玩家1进行大招对玩家2造成的伤害:"+attack1);
File sound8 = new File("sounds/八神庵大招.wav");
sound_choose = Applet.newAudioClip(sound8.toURL());
sound_choose.play();
Thread.sleep(5000);
sound_choose.stop();
System.out.println("玩家2血量值:"+HP2);
if(HP2<0) //避免极端情况比如两个玩家生命值很相近3,5.
{
break;
}
/***********玩家2开大**************/
HP1-=attack2;
System.out.println(ComputerName+" 大招 "+game1);
System.out.println("玩家2进行大招对玩家1造成的伤害:"+attack2);
File sound9 = new File("sounds/草薙京大招.wav");
sound_choose = Applet.newAudioClip(sound9.toURL());
sound_choose.play();
Thread.sleep(5000);
sound_choose.stop();
System.out.println("玩家1血量值:"+HP1);
if(HP1<0) {
break;
}
}
if(attack1<10&&attack2>10)
{
/***********玩家1普攻**************/
HP2-=attack1;
System.out.println("玩家1进行普攻对玩家2造成伤害:"+attack1);
File sound6 = new File("sounds/普攻1.wav");
sound_choose = Applet.newAudioClip(sound6.toURL());
sound_choose.play();
Thread.sleep(1000);
sound_choose.stop();
System.out.println("玩家2血量值:"+HP2);
if(HP2<0) //避免极端情况比如两个玩家生命值很相近3,5.
{
break;
}
/***********玩家2开大**************/
HP1-=attack2;
System.out.println(ComputerName+" 大招 "+game1);
System.out.println("玩家2进行大招对玩家1造成的伤害:"+attack2);
File sound9 = new File("sounds/草薙京大招.wav");
sound_choose = Applet.newAudioClip(sound9.toURL());
sound_choose.play();
Thread.sleep(5000);
sound_choose.stop();
System.out.println("玩家1血量值:"+HP1);
if(HP1<0) {
break;
}
}
if(attack1>10&&attack2<10)
{
/***********玩家1开大**************/
HP2-=attack1;
System.out.println(game1+" 大招 "+ComputerName);
System.out.println("玩家1进行大招对玩家2造成的伤害:"+attack1);
File sound8 = new File("sounds/八神庵大招.wav");
sound_choose = Applet.newAudioClip(sound8.toURL());
sound_choose.play();
Thread.sleep(5000);
sound_choose.stop();
System.out.println("玩家2血量值:"+HP2);
if(HP2<0) //避免极端情况比如两个玩家生命值很相近3,5.
{
break;
}
/***********玩家2进行普攻**************/
HP1-=attack2;
System.out.println("玩家2进行普攻对玩家1造成的伤害:"+attack2);
File sound7 = new File("sounds/普攻1.wav");
sound_choose = Applet.newAudioClip(sound7.toURL());
sound_choose.play();
Thread.sleep(1000);
sound_choose.stop();
System.out.println("玩家1血量值:"+HP1);
if(HP1<0) {
break;
}
}
}
/***********对战结果**************/
if(HP2<=0) {
File sound2 = new File("sounds/ko 草薙京.wav");
sound_choose = Applet.newAudioClip(sound2.toURL());
sound_choose.play();
System.out.println(game1+" KO "+ComputerName);
Thread.sleep(4000);
sound_choose.stop();
}
else if(HP1<=0)
{
File sound3 = new File("sounds/ko 八神庵.wav");
sound_choose = Applet.newAudioClip(sound3.toURL());
sound_choose.play();
System.out.println(ComputerName+" KO "+game1);
Thread.sleep(4000);
sound_choose.stop();
}
else //平局
{
File sound4 = new File("sounds/drawgame 平局.wav");
sound_choose = Applet.newAudioClip(sound4.toURL());
sound_choose.play();
System.out.println(ComputerName+" 平局 "+game1);
Thread.sleep(1000);
sound_choose.stop();
}
System.out.println("双方剩余血量:");
System.out.println(game1+": "+HP1+"\t"+ComputerName+": "+HP2);
input.close();
}
}
大概运行结果: