佰落暑期java自学记录-5
记录时间:2019-7-24
记录内容摘要:
1、java循环结构
2、java音频播放
3、随机数实现
4、石头剪刀布版拳皇初步实现
1、java循环结构
java循环结构与c语言循环结构基本相似,(for语句还未学到)
while语句和do while语句用法与c语言也基本相似;不做过多记录
2、java音频播放
具体内容尚未搞懂其使用方法,
本次使用的代码如下,播放游戏的开始音效;
可以将音频文件夹直接放到程序源码根目录下,java只支持wav格式音频(未验证)
File sound1 = new File("拳皇音效/拳皇98选人画面.wav");
AudioClip sound_choose = Applet.newAudioClip(sound1.toURL());
sound_choose.play();//播放开始音效;
3、随机数实现
本处使用的时math.random()来取0-1之间的随机数,然后通过乘法和求模来等计算来取得所需随机数。
本处随机生成1,2,3来代替电脑选择;
int com = (int) ((Math.random()*10) % 3 + 1);//电脑选择为自动生成
其它随机数方法待补充(正在研究);
4、石头剪刀布版拳皇初步实现
通过这次学习的内容制作了简易小游戏;
所含内容:
人机对战
循环
音频播放
代码如下:
package Kingoffight;
import java.applet.Applet;
import java.applet.AudioClip;
import java.io.File;
import java.net.MalformedURLException;
import java.util.Scanner;
public class Kingoffight
{
public static void main(String[] args) throws MalformedURLException, InterruptedException
{
Scanner input = new Scanner(System.in);
//剪刀石头布版拳皇。
//游戏开始;
File sound1 = new File("拳皇音效/拳皇98选人画面.wav");
AudioClip sound_choose = Applet.newAudioClip(sound1.toURL());
sound_choose.play();//播放开始音效;
System.out.println("欢迎您来到石头剪刀布版拳皇。");
System.out.print("请输入您的昵称:");//输入昵称
String useName = input.nextLine();
System.out.println("**************************************************\n游戏规则如下");//介绍比赛和规则
System.out.println("您输入1(石头),2(剪刀),3(布)来与电脑比赛,输的一方被攻击");
System.out.println("按任意键开始游戏\n**************************************************");
input.nextLine();
double hp1=100.0,hp2=100.0;//双方血量;
double attack=0;
int choice = 0;
while(hp1 > 0 && hp2 > 0)//双方血量都部小于0时执行
{
System.out.print("请输入您的选择:");//玩家选择
choice = input.nextInt();
int com = (int) ((Math.random()*10) % 3 + 1);//电脑选择为自动生成
if((choice == 1 && com == 2)||(choice == 2 && com == 3)||(choice == 3 && com == 1))//玩家胜利情况
{
System.out.println("**************************************************");
attack = Math.random()*10 + 10;//随机攻击力
hp2 -= attack;//电脑掉血
System.out.printf("您的石头击败了电脑的剪刀,打掉了电脑%.2f滴血\n",attack);
System.out.printf("您剩余%.2f hp\n电脑剩余%.2f hp\n",hp1,hp2);//打印双方血量
System.out.println("**************************************************");
}
if((choice == 1 && com ==1)||(choice == 2 && com ==2)||(choice == 3 && com == 3))//双方平局情况
{
System.out.println("**************************************************");
switch(com)
{
case 1:System.out.println("本次你们都出的石头,平局");break;
case 2:System.out.println("本次你们都出的剪刀,平局");break;
case 3:System.out.println("本次你们都出的布,平局");break;
}
System.out.println("**************************************************");
}
if((com == 1 && choice == 2)||(com == 2 && choice == 3)||(com == 3 && choice == 1))//电脑胜利情况
{
System.out.println("**************************************************");
attack = Math.random()*10 + 10;//随机攻击力
hp1 -= attack;
System.out.printf("电脑的石头击败了您的剪刀,打掉了您%.2f滴血\n",attack);
System.out.printf("您剩余%.2f hp\n电脑剩余%.2f hp\n",hp1,hp2);
System.out.println("**************************************************");
}
}
sound_choose.stop();//结束音效;
if(hp1 < 0)//输出胜利信息
System.out.println("您被电脑打败了,再接再励!");
else
System.out.printf("恭喜%s获得胜利!\n",useName);
System.out.println("本次游戏结束!");
}
}
运行结果:
欢迎您来到石头剪刀布版拳皇。
请输入您的昵称:张三丰
游戏规则如下
您输入1(石头),2(剪刀),3(布)来与电脑比赛,输的一方被攻击
按任意键开始游戏
请输入您的选择:1
本次你们都出的石头,平局
请输入您的选择:2
本次你们都出的剪刀,平局
请输入您的选择:3
您的石头击败了电脑的剪刀,打掉了电脑19.89滴血
您剩余100.00 hp
电脑剩余80.11 hp
请输入您的选择:1
本次你们都出的石头,平局
请输入您的选择:2
您的石头击败了电脑的剪刀,打掉了电脑12.18滴血
您剩余100.00 hp
电脑剩余67.93 hp
请输入您的选择:3
本次你们都出的布,平局
请输入您的选择:1
本次你们都出的石头,平局
请输入您的选择:2
您的石头击败了电脑的剪刀,打掉了电脑14.13滴血
您剩余100.00 hp
电脑剩余53.80 hp
请输入您的选择:3
本次你们都出的布,平局
请输入您的选择:1
您的石头击败了电脑的剪刀,打掉了电脑19.15滴血
您剩余100.00 hp
电脑剩余34.66 hp
请输入您的选择:2
本次你们都出的剪刀,平局
请输入您的选择:3
您的石头击败了电脑的剪刀,打掉了电脑12.90滴血
您剩余100.00 hp
电脑剩余21.75 hp
请输入您的选择:1
您的石头击败了电脑的剪刀,打掉了电脑13.10滴血
您剩余100.00 hp
电脑剩余8.65 hp
请输入您的选择:23
请输入您的选择:2
本次你们都出的剪刀,平局
请输入您的选择:3
您的石头击败了电脑的剪刀,打掉了电脑17.77滴血
您剩余100.00 hp
电脑剩余-9.12 hp
恭喜张三丰获得胜利!
本次游戏结束!
小游戏尚存较多bug,以后会慢慢更正;今天主要内容以实践为主。
问题:
1、各种import是不是类似与c中的函数库;
2、音频播放部分无法理解使用方法;太多不理解的英文字符串
额外收获
Java中时间的表示
System.currentTimeMillis();表示从1970-1-1到现在的毫秒数(很大,用long型);
可以记录两次时间来取差表示所用的时间