农场游戏开发记录九

困死了。今天还是在补充买种子这个行为的功能。开始还特地写了个seedStorage来继承Storage,后来发现直接用Storage就很完美了。今天的主要进展是完善了继承Products的Seed类。主要是完善构造方法,这使得主程序在利用Seed类的时候可以方便的根据情况选择合适的构造方法。(因为读取控制台命令和从后台内部程序创建对象略有不同)将Farmer类的买种子方法和种子店的sellSeeds方法联动了,并在主程序Farmergame中创建种子仓库对象seedStorage,把购买到的种子储存起来,并且联动了Farmer的cash属性。
总来的来说犯错修正还是花了更多的时间,功能倒是没实现多少。其中学到的是:将Storage类中静态初始化的Produts数组改成了默认赋值。结果运行时得到了空指针异常。因为数组中的空对象还可以用来做显示和做判断,但它的属性是不存在的。另外还学到一点,主程序中用来生成存入数组的对象,把它的作用域设计成赋值给数组元素的那一段代码就可以了。不然会造成你更改了对象的属性后,数组元素也相应的改了,因为毕竟存的只是个地址啊。这方面一定要有清醒的认识。Java内存使用的知识还需深入了解掌握。下面放今日更新代码:

package plants;

import farmgame.Products;

public class Seed extends Products{
   

	public Seed(String name, int num,float price) {
   
	super(name,num,price);
	}

	public Seed(String name,int num) {
   
		this.setProductName(name);
		this.setProductNum(num);
	}

	public Seed () {
   
		
	}

}

package farmgame;

import plants.Plants;
import shop.SeedShop;
import plants.Seed;

public class Farmer {
   

	private float cash = 10.0F;

	public void Seed(Plants plts) {
   
		System.out.println("种植 : " + plts.getName());
		plts.setStatus(1);

	}

	public void TakeCare(Plants plts) {
   
		if (plts.getStatus() <= 2)
			plts.setStatus(plts.getStatus() + 1);
		else
			System.out.println(plts.getName() + " 已经成熟啦。 ");
	}

	public boolean Harvest(Plants plts) {
   
		if (plts.getStatus() >= 3) {
   
			System.out.println("收获了:" + plts.getName());
			return true;

		}

		else {
   
			System.out.println(plts.getName() + " 还没成熟. ");
			return false;
		}

	}

	public float Sell(Products pdcts) {
   
		float sum = pdcts.getPrice() * pdcts.getProductNum();
		cash = cash 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值