实现猜拳游戏的话需要的肯定是玩家类,还有就是游戏地点类,电脑人类
具体代码:
玩家类:
public class HumanPlayer {
//出拳的信息
public static final int MessageTypeFist = 1;
//赢得比赛的信息
public static final int MessageTypeWin = 2;
//输了比赛的信息
public static final int MessageTypeLose = 3;
//属性:名称、分数、所出的拳、(角色的音效)、角色的对应台词
private String name;
private int score;
private int fist; //玩家出的拳是(剪刀、石头、布)
//角色的个性化台词
private String []fistWords = { //猜拳的时候说的话
"动感光波~biiubiubiu~",
"大象大象你的鼻子为什么这么长",
"必杀:露pp外星人~~",
"大姐姐你喜欢吃青椒?",
"胸部扁扁的欧巴桑,吃我一拳~"
};
private String []winWords = { //猜拳胜利所说的话
"还有谁",
"猜拳,有点意思~",
"~~~超神~~~~",
"全军出击~~~",
"吃着火锅唱着歌,然后你就输了~~"
};
private String []loseWords = {
"通往成功的道路总在施工中~",
"等到潮水退去,就知道谁在裸泳了~~",
"夏天就是不好,穷的时候我连西北风都没得喝。。。。",
"将来我死了,把QQ捐给希望工程,让孩子们一上来就能使用皇冠QQ~~",
"众人皆醉我独醒,举世皆浊我独清"
};
//方法:
public void sendMessage(int msgType)
{
int index = (int)(Math.random()*1000)%5; //随机产生0-4的随机数字
String message = null; //需要打印的消息
switch(msgType) {
case MessageTypeFist:
message = fistWords[index];
break;
case MessageTypeWin:
message = winWords[index];
break;
case MessageTypeLose:
message = loseWords[index];
break;
}
System.out.println(message);
}
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;
}
public int getFist() {
return fist;
}
public void setFist(int fist) {
this.fist = fist;
}
}
电脑人类:
public class ComputerPlayer {
public static final int MessageTypeFist = 1;
//赢得比赛的信息
public static final int MessageTypeWin = 2;
//输了比赛的信息
public static final int MessageTypeLose = 3;
//属性:名称、分数、所出的拳、(角色的音效)、角色的对应台词
private String name;
private int score;
private int fist; //玩家出的拳是(剪刀、石头、布)
//角色的个性化台词
private String []fistWords = { //猜拳的时候说的话
"平a",
"我是鲁班七号",
"哈哈或",
"我是外星人?",
"小样儿!~"
};
private String []winWords = { //猜拳胜利所说的话
"还有谁",
"猜拳,有点意思~",
"~~~超神~~~~",
"全军出击~~~",
"吃着火锅唱着歌,然后你就输了~~"
};
private String []loseWords = {
"通往成功的道路总在施工中~",
"等到潮水退去,就知道谁在裸泳了~~",
"夏天就是不好,穷的时候我连西北风都没得喝。。。。",
"将来我死了,把QQ捐给希望工程,让孩子们一上来就能使用皇冠QQ~~",
"众人皆醉我独醒,举世皆浊我独清"
};
//方法:
public void sendMessage(int msgType)
{
int index = (int)(Math.random()*1000)%5; //随机产生0-4的随机数字
String message = null; //需要打印的消息
switch(msgType) {
case MessageTypeFist:
message = fistWords[index];
break;
case MessageTypeWin:
message = winWords[index];
break;
case MessageTypeLose:
message = loseWords[index];
break;
}
System.out.println(message);
}
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;
}
public int getFist() {
//电脑的出拳实际上是生成1-3的随机数字
fist = (int)(Math.random()*3+1);
return fist;
}
}
游戏场景类:
import java.util.*;
public class GameRoom {
//属性:记分牌、道具、参与游戏的玩家、房间号、房间名称、房间的密码。。。。
private HumanPlayer player1 = null;
private ComputerPlayer player2 = null;
private String roomName; //房间名称
private String roomPass; //房间密码
public GameRoom(String roomName,String roomPass)
{
if(!("ly".equals(roomName)&&"123456".equals(roomPass))) {
System.out.println("游戏房间密码错误,强制退出");
return;
}
this.setRoomName(roomName);
initGame();
startGame();
endGame();
}
//方法:开始游戏、初始化游戏、显示菜单、选择人物、判断输赢(可以放在裁判类)
public void initGame() {
//1.实例化游戏玩家对象
player1 = new HumanPlayer();
player2 = new ComputerPlayer();
//2.初始化预习的其他属性
//如:游戏中的花花草草等
for(int i = 0;i<40;i++) {
System.out.print("*");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println();
}
public void startGame() {
showMenu();
choiceRole();
gaming();
}
//游戏循环
private void gaming() {
while(true){
//双方出拳
System.out.print(player1.getName()+"请出拳:");
Scanner input = new Scanner(System.in);
int number;
number = input.nextInt();
if(number>0&&number<4) {
player1.setFist(number);
int fist1 = player1.getFist();
player2.getFist();
int fist2 = player2.getFist();
//判断输赢
int reslut = judge(fist1,fist2);
//如果返回-1玩家1胜利,如果返回0打平,如果返回1玩家2胜利
//打印结果
if(reslut == -1)
{
System.out.println(player1.getName()+"胜利");
player1.sendMessage(HumanPlayer.MessageTypeWin);
player2.sendMessage(ComputerPlayer.MessageTypeLose);
}else if(reslut == 0)
{
System.out.println("平局");
player1.sendMessage(HumanPlayer.MessageTypeFist);
player2.sendMessage(HumanPlayer.MessageTypeFist);
}else if(reslut == 1)
{
System.out.println(player2.getName()+"胜利");
player1.sendMessage(HumanPlayer.MessageTypeLose);
player2.sendMessage(HumanPlayer.MessageTypeWin);
}
System.out.println("是否继续游戏?");
String answer = new Scanner(System.in).next();
if("no".equals(answer)){ //这里判断是否继续游戏,输入除了no以外的则继续
break;
}
}
else
{
System.out.println("出拳违反规则,请重新输入");
// number = input.nextInt();
}
}
}
public void showMenu() {
System.out.println("游戏加载成功!");
System.out.println("欢迎进入"+roomName+"游戏房间");
System.out.println("出拳规则:1-石头;2-剪刀;3-布");
}
public void choiceRole() {
System.out.println("对方角色:1-风间;2-妮妮;3-正南;4-阿呆。。");
System.out.println("请选择:");
int choice;
choice= new Scanner(System.in).nextInt();
if(choice>0&&choice<=4)
{
String[] nameArray = {"风间","妮妮","正南","阿呆"};
player2.setName(nameArray[choice-1]);
player1.setName("野原新之助");
System.out.println(player1.getName()+"VS."+player2.getName());
}
else
{
System.out.println("输入错误,请重新输入");
// choice = new Scanner(System.in).nextInt();
}
}
public int judge(int fist1,int fist2) {
if(fist1 == fist2)
return 0;
if(fist1 == 1&& fist2 ==3 ||fist1 == 2&& fist1 ==1 || fist1 ==3&& fist2 ==2)
{
//玩家1的分数+1,玩家2的分数-1
player1.setScore(player1.getScore()+1);
player2.setScore(player2.getScore()-1);
return -1; //玩家1胜利
}
//玩家2胜利
player1.setScore(player1.getScore()-1);
player2.setScore(player2.getScore()+1);
return 1;
}
public void endGame() {
System.out.println(player1.getName()+"\t"+player2.getName());
System.out.println(player1.getScore()+"\t"+player2.getScore());
System.out.println("游戏已经结束,欢迎继续游戏");
}
public String getRoomName() {
return roomName;
}
public void setRoomName(String roomName) {
this.roomName = roomName;
}
public String getRoomPass() {
return roomPass;
}
public void setRoomPass(String roomPass) {
this.roomPass = roomPass;
}
}
测试类:
public class TestGame {
public static void main(String[] args) {
// TODO Auto-generated method stub
new GameRoom("ly","123456");
}
}
结果:
玩家类和电脑人类相似,个人感觉java是非常强大的,自己对类的封装这里理解也不深,之后会将web版本有动图的做出来会放上来。