* Computer 电脑类
* 属性 :角色名,得分。
* 方法:出拳的方法
1 /**
2 * Computer 电脑类
3 * 属性 :角色名,得分。
4 * 方法:出拳的方法
5 * @author lisi
6 * @version 版本 1.0
7 *
8 */
9 public class Computer {
10 // 属性 昵称,得分
11 String computer_name = "电脑";// null
12 int computer_score = 0;// 0
13
14 //出拳方法 int --- 参数无参数。实例方法,对象方法 不被static修饰。
15 /**
16 * Computer 出拳方法
17 * @return 电脑出的拳:1 剪刀 2 石头 3 布
18 */
19 public int computerShowFist() {
20 int show = (int)(Math.random()*3)+1;
21 switch (show) {
22 case 1:
23 System.out.println(computer_name + "出了剪刀");
24
25 break;
26 case 2:
27 System.out.println(computer_name + "出了石头");
28 break;
29 case 3:
30 System.out.println(computer_name + "出了布");
31 break;
32
33
34 }
35 return show;
36
37 }
38
39
40
41 }
电脑类1 public class ComputerTest {
2 public static void main(String[] args) {
3 Computer computer = new Computer();
4 int show = computer.computerShowFist();
5 System.out.println(show);
6
7 }
8
9 }
电脑类测试类 1 import java.util.Scanner;
2
3 /**
4 * Person 类
5 * 名字
6 * 分数
7 * 出去的功能
8 * @author lisi
9 *
10 */
11 public class Person {
12 String person_name = "匿名";
13 int person_score = 0;
14
15
16 // 人出拳
17 /**
18 * 人出拳的方法
19 * @return 人出的拳头;1 剪刀 2 石头 3 布
20 */
21 public int personShowFist() {
22 Scanner sc = new Scanner(System.in);
23 System.out.println("请出拳:1 剪刀 2 石头 3 布 ");
24 int show = sc.nextInt();
25 switch (show) {
26 case 1:
27 System.out.println(person_name + "出了剪刀");
28
29 break;
30 case 2:
31 System.out.println(person_name + "出了石头");
32 break;
33 case 3:
34 System.out.println(person_name + "出了布");
35 break;
36
37
38 }
39
40 return show;
41 }
42
43 }
人类 1 import java.util.Scanner;
2
3 /**
4 * 游戏类
5 * 操作 管理 上面定义的Person类和Computer类,
6 * 调用各自出拳的方法,去做比较,输赢。
7 * @author
8 *
9 */
10 public class Game {
11
12 // 把 Person 和 Computer,作为自己的属性值。
13 Person person;
14 Computer computer;// 类作为另外一个类的成员。
15 // 引用数据类型默认值:--- null- --- 空指针
16 // 定义属性count表示对战的次数
17 int count = 0;
18
19
20 public void inital() {
21 if(person == null) {
22 person = new Person();
23 }
24 if(computer == null) {
25 computer = new Computer();
26 }
27 }
28
29
30 // 开始游戏的方法:
31 public void startGame() {
32 Scanner sc = new Scanner(System.in);
33 System.out.println("-----------欢迎加入猜拳游戏--------------");
34 System.out.println();
35 System.out.println("************************************");
36 System.out.println("出拳的规则 : 1 剪刀 2 石头 3 布");
37 System.out.println("**************猜拳开始********************");
38 System.out.println("****************************************");
39 System.out.println();
40
41 // 调用初始化方法
42 inital();
43 // 加入角色名
44 System.out.println("选择角色:1 曹操 2 吕布 3 孙权");
45 int role = sc.nextInt();
46
47 switch (role) {
48 case 1:
49 computer.computer_name = "曹操";
50 break;
51 case 2:
52 computer.computer_name = "吕布";
53 break;
54 case 3:
55 computer.computer_name = "孙权";
56 break;
57 }
58 System.out.println("请输入你的名字:");
59 person.person_name = sc.next();
60
61 System.out.println(person.person_name + " PK " + computer.computer_name +" 对战");
62 System.out.println("是否开始游戏:y / n");
63 String answer = sc.next();
64
65 while("y".equals(answer)) {
66
67
68 // 调用各种的出拳:
69 int personFist = person.personShowFist();
70 int computerFist = computer.computerShowFist();
71
72 // 根据出的拳比较输赢 1 剪刀 2 石头 3 布
73
74 if (personFist == 1 && computerFist == 3 || personFist == 2 && computerFist == 1||personFist == 3 && computerFist == 2) {
75 System.out.println(person.person_name + "赢");
76 // 添加人的分数
77 person.person_score += 1;
78 }else if (personFist == computerFist) {
79 System.out.println("平局");
80 }else {
81 System.out.println(computer.computer_name + "赢");
82 computer.computer_score += 1;
83 }
84 // 记录对战的次数:
85 count ++;
86
87 System.out.println("是否开始下一局:y / n");
88 answer = sc.next();
89 }
90
91
92 // 循环结束,结束游戏
93 System.out.println("退出游戏");
94 // 调用展示结果的方法
95 showResult();
96 }
97
98 public void showResult() {
99 System.out.println("--------------------");
100 System.out.println(person.person_name + " PK " + computer.computer_name );
101 System.out.println("对战的次数:" + count);
102
103
104 System.out.println(person.person_name + "的得分:"+ person.person_score);
105 System.out.println(computer.computer_name + "得分"+computer.computer_score);
106
107 if (person.person_score > computer.computer_score) {
108 System.out.println(person.person_name+ "好厉害");
109 }else if (person.person_score == computer.computer_score) {
110 System.out.println("最终是平局");
111 }else {
112 System.out.println("布要气馁,下次接着来");
113 }
114
115
116
117 }
118
119
120
121
122
123
124
125 }
Game类public class GameTest {
public static void main(String[] args) {
Game game = new Game();
game.startGame();
}
}
GameTest类
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir
假设我有一个FireNinja我的数据库中的对象,使用单表继承存储。后来才知道他真的是WaterNinja.将他更改为不同的子类的最干净的方法是什么?更好的是,我很想创建一个新的WaterNinja对象并替换旧的FireNinja在数据库中,保留ID。编辑我知道如何创建新的WaterNinja来self现有FireNinja的对象,我也知道我可以删除旧的并保存新的。我想做的是改变现有项目的类别。我是通过创建一个新对象并执行一些ActiveRecord魔法来替换行,还是通过对对象本身做一些疯狂的事情,或者甚至通过删除它并使用相同的ID重新插入来做到这一点,这是问题的一部分。
根据ActiveRecord::Base的文档:==(comparison_object)Returnstrueifcomparison_objectisthesameexactobject,orcomparison_objectisofthesametypeandselfhasanIDanditisequaltocomparison_object.id.Notethatnewrecordsaredifferentfromanyotherrecordbydefinition,unlesstheotherrecordisthereceiveritself.Besides,ifyoufet