【幻化万千戏红尘】第一周小项目

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);
  
 }
}

posted on 2016-07-18 09:32  幻化万千戏红尘  阅读(167)  评论(0编辑  收藏  举报