刚开始学对象编程,不知道怎么写,大家帮帮忙

2019-05-05 08:31:40 +08:00
 pinews
思路如下,
有一对对象
有男一人,女一人,
男提出约会,女同意约会
约会进行
约会结束
男金钱减 300,双方亲密度减 300

怎么写啊,完全没头绪,苦恼
4873 次点击
所在节点    程序员
47 条回复
SuperMild
2019-05-05 10:15:10 +08:00
逻辑上有一些 bug,但大概思路就是这样。
zhaishunqi
2019-05-05 10:15:16 +08:00
我只想知道分手是不是减 600....
python30
2019-05-05 10:20:13 +08:00
这是相亲游戏环节?
zy445566
2019-05-05 10:27:28 +08:00
es6 写的,java 照搬就是

class Proson {
constructor(name, money) {
this.name = name;
this.money = money;
this.love_level = 0;
console.log(`${this.name} 有 ${this.money} 的钱, 有 ${this.love_level} 的好感度`);
}

costLove(love_level) {
this.love_level-=love_level;
console.log(`${this.name} 降低了 ${love_level} 的好感度,现在还有 ${this.love_level} 的好感度`);
}
}

class Meet {
constructor(sender) {
this.sender = sender;
this.agreer = null;
this.startTime = null;
this.endTime = null;
console.log(`${this.sender.name} 发起了约会`);
}
agree(agreer) {
this.agreer = agreer;
console.log(`${this.agreer.name} 接受了约会`);
}

start () {
if(this.agreer !== null) {
console.log(`约会开始了`);
this.startTime = new Date();
} else {
console.log(`约会还未被接受`);
}
}

end () {
if(this.startTime !== null) {
console.log(`约会结束了`);
this.sender.costMoney(300);
this.sender.costLove(300);
this.agreer.costLove(300);
} else {
console.log(`约会还未开始`);
}
}
}

class Man extends Proson {
constructor(name, money) {
super(name, money);
}
sendMeet() {
return new Meet(this);
}
costMoney (money) {
this.money-=money;
console.log(`${this.name} 花费 ${money} 的钱,现在有 ${this.money} 的钱`);
}
}

class Woman extends Proson {
constructor(name, money) {
super(name, money);
}

agreeMeet(meet) {
meet.agree(this);
}
}

let tom = new Man('Tom',300);
let jan = new Woman('Jan',0);
let meet = tom.sendMeet();
jan.agreeMeet(meet);
meet.start();
meet.end();
zy445566
2019-05-05 10:28:41 +08:00
可以直接在谷歌浏览器打开控制台运行
cmqwan
2019-05-05 10:36:28 +08:00
@Bigglesworth 正常,约会途中发生了一些不愉快的事情,聊天的时候哪句话说错了之类的
pinews
2019-05-05 10:48:21 +08:00
@SuperMild 谢谢 学习一下
@python30 是的,自己想出来一个相亲小游戏的实例,来学习面对对象编程。
pinews
2019-05-05 10:51:54 +08:00
@zy445566 太感谢了 正是我想要的
pinews
2019-05-05 10:54:45 +08:00
@zy445566 虽然还有好多地方看不懂我慢慢消化一下
fvckDaybyte2
2019-05-05 11:25:17 +08:00
如果男方金钱减 600,女方金钱加 400,亲密度不变,是不是可以报警了
arthasliu
2019-05-05 11:28:24 +08:00
@fvckDaybyte2 还有中间商赚差价吗。。
Isight
2019-05-05 11:28:47 +08:00
约会进行的详细流程与金钱减 300 的关系说清楚,然尝试把金钱加个 0,尝试一下
fvckDaybyte2
2019-05-05 11:35:07 +08:00
@arthasliu 房费不要钱么……
senni
2019-05-05 12:20:27 +08:00
为什么要学编程
可以 new 一个对象
zgl263885
2019-05-05 12:29:38 +08:00
简单分析下业务,大概应该有一个基类,人,拥有一些基本的属性和方法,如属性姓名,出生日期,性别,财富,当前对象(们,劈腿情景);方法有约会(参数为人基类,不能排除同性约会),吃饭方法,说话方法,等等。有了基类后,要派生两个子类,男人,女人,定义一些各自特征属性和特有方法,如女人会有大姨妈,而男人没有,男女上厕所方式不同等。针对某些属性和方法,需要使用 public,protect 等关键字尽心访问限制。
根据业务需求,不断完善基类和子类模型。
当一个人约会另一个人时候,可以这样调用了:张三.约会(李四,明晚,某某地点,300 元)。
zgl263885
2019-05-05 12:31:17 +08:00
约会过程中需要触发哪些事件或方法,再定义和调用一下就好了。
vtoexshan
2019-05-05 12:40:14 +08:00
先找个对象,然后学习起来更容易
shm7
2019-05-05 12:47:58 +08:00
男方金额-1000w$,女方好感度提升+100%
zdnyp
2019-05-05 13:52:37 +08:00
@fvckDaybyte2 我怀疑你在开车,但是我又没有证据
huage2580
2019-05-05 14:45:47 +08:00
嗯,是这样的,这是数据库设计范畴(滑稽

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/560965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX