Java自制人机小游戏——————————剪刀、石头、布
package com.hello.test; import java.util.Scanner; public class TestGame { public static void main(String[] args)
{
Player p = new Player() ; //实例化玩家对象 Game g = new Game(p) ;//实例化游戏对象 g.startGame();//调用方法
} } //游戏类
class Game
{
private Player p ; //设置玩家 public Game(Player p)
{
this.p =p ;
} //制定游戏规则
public int rule(String s1 ,String s2)
{
if(s1.equals(s2)) //先将电脑跟人出拳相同情况拿出
{
return 0 ;
}
if(s1.equals("剪刀"))
{
if(s2.equals("布"))
{
return 1 ;
}
if(s2.equals("石头"))
{
return -1 ;
}
}
if(s1.equals("石头"))
{
if(s2.equals("布"))
{
return -1 ;
}
if(s2.equals("剪刀"))
{
return 1 ;
}
}
if(s1.equals("布"))
{
if(s2.equals("剪刀"))
{
return -1 ;
}
if(s2.equals("石头"))
{
return 1 ;
}
}
return 0;
} public boolean panduan(String s)
{
if("剪刀".equals(s)||"布".equals(s)||"石头".equals(s)||"esc".equals(s))
{
return true ;
}
else
{
return false ;
}
} //游戏开始方法
public void startGame()
{
System.out.println("开始游戏"); System.out.println("请输入您的游戏昵称:"); Scanner s = new Scanner(System.in) ; String sg = s.nextLine() ; p.setName(sg); p.setScore(100); System.out.println("恭喜您注册成功,您的初始积分为100"); System.out.println(p.getName()+"进入游戏"); while(true)
{
String[ ] array = new String[ ] {"剪刀","石头","布"} ; System.out.println("请输入剪刀、石头或布,结束请输入esc"); Scanner sc = new Scanner(System.in) ; //提供输入窗口 String s1 = sc.nextLine() ; if(!panduan(s1))
{
System.out.println("输入有误,重新输入!");
continue ;
} if(s1.equals("esc"))
{
break ;
} int a = (int)(Math.random()*3) ; //随机0,1,2作为索引 String s2 = array[a] ; int it = rule(s1,s2) ; if(it>0)
{
System.out.println("您出的是"+s1+"电脑出的是"+s2);
System.out.println("恭喜"+p.getName()+"赢了,奖励10积分");
p.setScore(p.getScore()+10);
}
else if(it<0)
{
System.out.println("您出的是"+s1+"电脑出的是"+s2);
System.out.println("对不起"+p.getName()+"您输了,扣除10积分为");
p.setScore(p.getScore()-10);
}
else
{
System.out.println("您出的是"+s1+"电脑出的是"+s2);
System.out.println("打平了");
p.setScore(p.getScore());
}
System.out.println(p);
}
System.out.println(p.getName()+"退出了游戏,当前积分为:"+p.getScore());
} } //玩家类
class Player
{
private String name ; //玩家姓名 private int score ; //玩家积分 //setting、getting
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
} @Override
public String toString() {
return "玩家:" + name + ", 当前积分:" + score;
} }
Java自制人机小游戏——————————剪刀、石头、布的更多相关文章
- 自己写的一个小的剪刀——石头——布游戏的GUI程序
很简单的一个程序,建议各位初学Java的同学可以试试写写这个程序: import javax.swing.JOptionPane; public class Game { public static ...
- 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药
自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析
自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- 自制Unity小游戏TankHero-2D(3)开始玩起来
自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅 ...
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
- 自制Unity小游戏TankHero-2D(1)制作主角坦克
自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
- java猜数字小游戏
/* * * 猜数字小游戏 * * 先由系统生成一个2-100之间的随机数字, * * 然后捕获用户从控制台中输入的数字是否与系统生成的随机数字相同, * * 如果相同则统计用户所猜的次数,并给出相应 ...
- Java打飞机小游戏(附完整源码)
写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码写的很 ...
- 软件设计之基于Java的连连看小游戏(一)——开题及游戏首页的制作
原本计划紧张忙碌的考试月在图书馆和实验室度过,结果突如其来为期两周的软件设计把课余时间几乎捆绑在了机房.软设没有太多知识上的要求,只要成品简洁美观.实用准确即可.考虑了很久决定要用Java swing ...
随机推荐
- android 应用架构随笔二(定义BaseApplication并配置Application)
定义BaseApplication并配置Application import android.app.Application; import android.os.Handler; /** * * = ...
- linux C判断文件是否存在【转】
转自:http://blog.csdn.net/kingjo002/article/details/8442146 一.access函数 功能描述: 检查调用进程是否可以对指定的文件执行某种操作. 用 ...
- Android应用插件式开发解决方法
转自:http://blog.csdn.net/arui319/article/details/8109650 一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来 ...
- MySQL存储引擎中的MyISAM和InnoDB区别详解
在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问.为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数 ...
- HDU 1827:Summer Holiday(强连通)
http://acm.hdu.edu.cn/showproblem.php?pid=1827 思路:强连通分量缩点后找入度为0的点,然后对于属于该强连通分量的找一个最小耗费的入口. #include ...
- 记得ajax中要带上AntiForgeryToken防止CSRF攻击
经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...
- Sightseeing tour
Sightseeing tour Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8276 Accepted: 3489 Desc ...
- Children of the Candy Corn 分类: POJ 2015-07-14 08:19 7人阅读 评论(0) 收藏
Children of the Candy Corn Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10933 Acce ...
- Y2K Accounting Bug 分类: POJ 2015-06-16 16:55 14人阅读 评论(0) 收藏
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11222 Accepted: 56 ...
- TestNG测试框架在基于Selenium进行的web自动化测试中的应用
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ TestNG+Selenium+Ant TestNG这个测试框架可以很好的和基于Selenium的 ...