【幻化万千戏红尘】第一周小项目
1、设计猜拳游戏:
游戏说明:
类型:剪刀1、石头2、布3
其中:
剪刀----布----结果---赢
石头----剪刀--结果---赢
布------石头--结果---赢
相同就是平局
其他就是输
本系统采用人机对战
电脑每局的结果就是通过随机数来完成
玩家的结果是通过键盘输入对象的编号
通过一定的方法来验证输赢的结果
循环进行
退出的条件:
1.自愿退出
2.输的达到10次的时候
A:退出
B:重新开始
扩展:要求支持金额充值
玩家可以指定每次的赌注
注意:随机数,可以使用Math.random():返回[0.0,1.0)
也可以导包
import java.util.Random;
在方法内部:
Random rm=new Random();
int num=rm.nextInt(10);//获取随机数,范围[0,10)
import java.util.Scanner;
import java.util.Random;
class jianDaoShiTouBuYouXi
{
public static void main(String[] args)
{
int count=0;
boolean p=true;
int money=0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的金钱:");
money = sc.nextInt();
out:while(p)
{
if(money<=0)
{
System.out.println("你的金钱太少了,请重新
充值!赌博有风险,请慎重考虑,都是血汗钱。确认充值请按“y”,退出游
戏请按其它键");
char jq = sc.next().charAt(0);
if(jq == 'y')
{
System.out.println("请输入要充
值的金额:");
int m = sc.nextInt();
money += m;
System.out.println("目前金
额为:"+money);
}
else
{
break out;
}
}
int xz = 0;
System.out.println("玩家请下注!!!(赔率一赔一)");
xz = sc.nextInt();
while(xz > money)
{
System.out.println("输入金钱错误,你的金钱小
于下注金额,请重新输入");
xz = sc.nextInt();
}
outt:while(true)
{
while(count==10)
{
System.out.println("你已经输了十
次,请选择:A:退出 B:重新开始");
char cx = sc.next().charAt(0);
if(cx=='A')
{
break out;
}
else if(cx=='B')
{
count=0;
continue out;
}
else
{
System.out.println("输入字符
出错,请重新输入");
}
}
Random rm = new Random();
int jj = rm.nextInt(3);//获取随机数,范围[0,3)
System.out.println("请输入剪刀石头布代表的数字:
1:剪刀。2:石头。3:布。");
int jd = sc.nextInt();//获取输入的数字
switch(jd)
{
case 1:switch(jj)//剪刀、输入的
{
case 1:System.out.println("你是剪
刀"+"---"+"我是剪刀"+"---"+"平局");break;//剪刀
case 2:System.out.println("你是剪刀"+"---"+"我是石头
"+"---"+"你输了!!!");
money -= xz;
count++;break;//石头
case 0:System.out.println("你是剪
刀"+"---"+"我是布"+"---"+"你赢了!");
money +=xz;
break;//布
};
System.out.println("你目前剩余的金钱
为:"+money);
System.out.println("退出游戏?请按下y,否则
按下其它键则继续游戏");
char an = sc.next().charAt(0);
if(an=='y')
{
break out;
}
break outt;
case 2:switch(jj)//石头
{
case 1:System.out.println("你是石
头"+"---"+"我是剪刀"+"---"+"你赢了!");
money +=xz;
break;//剪刀
case 2:System.out.println("你是石头"+"---"+"我是石头
"+"---"+"平局");break;//石头
case 0:System.out.println("你是石
头"+"---"+"我是布"+"---"+"你输了!!!");
money -= xz;
count++;break;//布
};
System.out.println("你目前剩余的金钱
为:"+money);
System.out.println("退出游戏?请按下y,否则
按下其它键则继续游戏");
char bn = sc.next().charAt(0);
if(bn=='y')
{
break out;
}
break outt;
case 3:switch(jj)//布
{
case 1:System.out.println("你是
布"+"---"+"我是剪刀"+"---"+"你输了!!!");
money -= xz;
break;//剪刀
case 2:System.out.println("你是布"+"---"+"我是石
头"+"---"+"你赢了!");
money +=xz;
break;//石头
case 0:System.out.println("你是
布"+"---"+"我是布"+"---"+"平局");count++;break;//布
};
System.out.println("你目前剩余的金钱
为:"+money);
System.out.println("退出游戏?请按下y,否则
按下其它键则继续游戏");
char cn = sc.next().charAt(0);
if(cn=='y')
{
break out;
}
break outt;
default:System.out.println("输入数字出错了
,请重新输入!!!");continue outt;
}
}
}
System.out.println("谢谢使用本游戏,欢迎下次再来!
!!");
}
}
2、万年历。[周末]
万年历
a:先输出提示语句,并接受用户输入的年、月。
b:根据用户输入的年,先判断是否是闰年。(闰年2月有29天,平年2月有28天
);
C:根据用户输入的月来判断月的天数。
D:用循环计算用户输入的年份距1900年1月1日(星期一)的总天数。*
E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。*
F:相加D与E的天数,得到总天数。
G:用总天数来计算输入月的第一天的星期数。
H:根据G的值,格式化输出这个月的日历!*
H提示:
1.如果当月1日如果不是周日先打印第一行,再打印后面的
(1)startDay=0~5,先打印若干个空格,startDay==0时,是星期一,应
该在星期日处打印一个空格,以此类推[0~startDay+1)
(2)再打印第一行的日期[1,7-startDay)
(3)打印换行
(4)第一行打印的天数为:1~(6-startDay),所以第二行从7-startDay
开始打印,打印到当月总天数为止,每7个换行
2.如果startDay是6(周日),直接从1日开始打印到最后一天,每7个换
行
提示:当月1日如果不是周日,应循环输出\t以便对齐
当月1日的星期数加上日期的号,如果能被7整除,则应换行.
import java.util.Scanner;
class wannianli
{
public static void main(String[] args)
{
System.out.println("请输入年份和月份:");
Scanner sc = new Scanner(System.in);
int days = 0;
System.out.println("请输入年份:");
int age = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
int day=0,mday=0,mmday=0;
for(int i=1900;i<age;i++)
{
days += allDay(i);
}
//for(int j=1;j<=month;j++)
if(age%4==0 && age%100!=0 || age%400==0)
{
for(int i=1;i<=month;i++)
{
mmday +=mrDay(i);
mday = mrDay(i);
days += mday;
}
}
else
{
for(int i=1;i<=month;i++)
{
mmday +=mpDay(i);
mday = mpDay(i);
days += mday;
}
}
System.out.println("用户输入的月份距输入的年份的1月
1日共有"+mmday+"天");
System.out.println("用户输入的年份距1900年1月1日的
总天数为:"+days);
System.out.println("用户输入的年份的月份距1900年1月
1日的总天数为:"+days);
System.out.println();
System.out.println();
System.out.println("--------------"+month+"月日
历"+"---------------");
System.out.println();
int day1=(days-mday)%7+1;//总天数减去这个月的天数再
求余7+1==这个月第一天是星期几
System.out.println(" 日 一 二 三 四 五
六 \n");
int cnt=0;
for(int i=0;i<day1;i++){
if(day1==7)break;
cnt++;
System.out.print(" ");//五个字符空格,
要与上面日历标题符合
}
for(int i=1;i<=mday;i++){
if(i<10)System.out.print(" "+i+" ");
else System.out.print(" "+i+" ");
cnt++;
if(cnt%7==0)System.out.println("\n");
}
}
public static int allDay(int age)
{
int num =0;
if(age%4==0 && age%100!=0 || age%400==0)
{
num = 366;
}
else
{
num =365;
}
return num;
}
public static int mrDay(int j)
{
int day=0;
switch(j)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
case 2: day=29;break;
default:System.out.println("月份输入出错,请重新输
入");
}
return day;
}
public static int mpDay(int j)
{
int day=0;
switch(j)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
case 2: day=28;break;
default:System.out.println("月份输入出错,请重新输
入");
}
return day;
}
}
/**
switch(month)
{
case 12:mmday=31;maday+=mmday;
case 11:mmday=30;maday+=mmday;
case 10:mmday=31;maday+=mmday;
case 9:mmday=30;maday+=mmday;
case 8:mmday=31;maday+=mmday;
case 7:mmday=31;maday+=mmday;
case 6:mmday=30;maday+=mmday;
case 5:mmday=31;maday+=mmday;
case 4:mmday=30;maday+=mmday;
case 3:mmday=31;maday+=mmday;
case 2:if(age%4==0 && age%100!=0 || age
%400==0)
{
mmday=29;maday+=mmday;
}
else
{
mmday=28;maday
+=mmday;
}
case 1:mmday=31;maday+=mmday;break;
}
*/
3、猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又
多吃了一个。第二天又将剩下的吃了一半又多吃了一个,以后每天早上都吃
了前一天剩下的一半零一个。到第10天早上再想吃时,就剩下一个桃子了。
求第一天共摘了多少个桃子?
class houzi
{
public static void main(String[] args)
{
/**猴子吃桃问题。猴子第一天摘下若干桃子,
当即吃了一半,还不过瘾,又多吃了一个。
第二天又将剩下的吃了一半又多吃了一个,
以后每天早上都吃了前一天剩下的一半零一个
。到第10天早上再想吃时,就剩下一个桃子了。
求第一天共摘了多少个桃子?*/
int num = 1;
for(int i=9;i>0;i--)
{
num = (num+1)*2;
}
System.out.println(num);
}
}