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自制人机小游戏——————————剪刀、石头、布的更多相关文章

  1. 自己写的一个小的剪刀——石头——布游戏的GUI程序

    很简单的一个程序,建议各位初学Java的同学可以试试写写这个程序: import javax.swing.JOptionPane; public class Game { public static ...

  2. 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

    自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  3. 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析

    自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  4. 自制Unity小游戏TankHero-2D(3)开始玩起来

    自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅 ...

  5. 自制Unity小游戏TankHero-2D(2)制作敌方坦克

    自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  6. 自制Unity小游戏TankHero-2D(1)制作主角坦克

    自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  7. java猜数字小游戏

    /* * * 猜数字小游戏 * * 先由系统生成一个2-100之间的随机数字, * * 然后捕获用户从控制台中输入的数字是否与系统生成的随机数字相同, * * 如果相同则统计用户所猜的次数,并给出相应 ...

  8. Java打飞机小游戏(附完整源码)

    写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码写的很 ...

  9. 软件设计之基于Java的连连看小游戏(一)——开题及游戏首页的制作

    原本计划紧张忙碌的考试月在图书馆和实验室度过,结果突如其来为期两周的软件设计把课余时间几乎捆绑在了机房.软设没有太多知识上的要求,只要成品简洁美观.实用准确即可.考虑了很久决定要用Java swing ...

随机推荐

  1. SEO之链接农场、内容农场、微信内容农场

    SEO之链接农场.内容农场.微信内容农场 一.“内容农场”的上市之路http://www.neweekly.com.cn/newsview.php?id=3330里斯2006年的第二次创业仍旧延续了上 ...

  2. 将edit ctrL弄的像个dos

    case WM_CTLCOLOREDIT: { HWND hShellText = GetDlgItem(hDlg,IDC_TXT_SHELL); if (hShellText == (HWND)lP ...

  3. ansible

    3.1 配置 #vim /etc/ansible/hosts       //定义主机,支持IP和域名,支持分组 [local] 127.0.0.1 [nginx] 192.168.0.10     ...

  4. $(document).ready vs $(window).load vs window.onload

    原文地址: $(document).ready vs $(window).load vs window.onload $(document).ready We execute our code whe ...

  5. Centos7下卸载docker

    最近发现某台机器上的Docker服务无法开启,报如下错误: [root@localhost ~]# docker ps -a Cannot connect to the Docker daemon. ...

  6. 使用phpmyadmin导入SQL数据报错:#1062 - Duplicate entry '...

    使用phpmyadmin导入SQL数据报错: MySQL 返回: #1062 - Duplicate entry '0' for key 'PRIMARY' 出现此错误的原因是数据的主键重复了,错误信 ...

  7. PHP 页面编码声明与用header或meta实现PHP页面编码的区别

    php的header来定义一个php页面为utf编码或GBK编码 php页面为utf编码 header("Content-type: text/html; charset=utf-8&quo ...

  8. hdwiki 的模板和标签

    模版和标签 HDWiki模版标签可以让用户更方便.更容易的在页面中调用HDWiki的数据.        HDWiki的三种标签:1.循环标签 {hdwiki:doclist...}{/hdwiki} ...

  9. ZOJ 3861 - Valid Pattern Lock

    3861 - Valid Pattern Lock Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & ...

  10. Bag Problem

    Bag Problem Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/131072 K (Java/Others) Total ...