写个买卖小游戏,第1天(昨天)
第一天,11/25到11/26凌晨:
1. 既然要做交易类,首先要有东西交易,于是先写了Commodity抽象类,大致定义了名称ID和价格三个属性,又定义了changePrice这个方法,为了表示市场价格的浮动。
2. 于是顺其自然地先写了一个子类来测试,嗯,叫苹果。价格变化用了这样的方法实现(当然这是今天又稍微修改了一下的版本,不过思想上差不多):
void changePrice(){this.price = (int) ((50 + Math.random() * 15.6 - 7.8) * 10) / 10.0;}
3. 作为游戏当然必须有玩家,于是稍微测试了一下苹果的几个属性的显示之后,紧接着就写了Player类,加入一个数组属性用来根据物品ID来存放持有货物的数量,还写了一个buy方法,玩家是商人嘛。后来又加上了金钱属性,顺手把初始化金钱数扔进了构造方法。老实说java的构造方法不如__init__好懂,当然也可能只是我用的少。
4. buy方法接收一个Commodity的对象类型的参数,我是想马上试用一下高大上的多态的,用Python的时候也没在意过多态是什么意思,面向过程加面向对象就是好。
5. 上一条是伏笔。
6. 于是继续测试,做一点测试一点是好习惯。于是我写了Run类,里面放好了main方法准备测试,还高兴地写了点提示,显示金钱数显示有什么商品之类的。
7. 然后我就傻逼了。不管我怎么买钱就是不减,但是持有货物会增加,现实里我有这能力多好,程序里还是免了。
8. 上一条是回收伏笔。
9. 然后我就在这个问题上搭了两个小时。我不断地寻找,油腻的bug在哪里。我改了价格改方法,改了方法改运行内容,加了this删this,改了构造方法改属性。
10. 最后我灵光一闪。对就是这种:
“他妈的属性不能多态!”
11. 然后我就傻逼了,因为就算知道了错在哪我也不知道该怎么改,只能把buy方法的形参改成Apple类型将就用。于是暂时加了别的商品也没用了,只好先搁置这个做其他的功能。
12. 然后,我就不知道该干啥好了……时间也过了十二点,就改了改UI(文字用户界面叫CUI还是WUI),弄了弄细节,然后空虚寂寞地洗洗睡了。