mac OS X 下ft_rich游戏的重构

      ft_rich是用ruby写的一个简单得扑克大富翁游戏,逻辑很简单,使用了终端颜色

的特性。

    原来是在windows下使用ruby c ext实现的颜色功能,现在在mac OS x下做移植,

因为后者终端直接支持颜色显示,所以没那么复杂了——直接在ruby里使用

gem highline搞定鸟。

    windows下的颜色使用的是一个class Ctxt#color方法,Ctxt是在c ext中调用

native win32 api实现的。移植得第一步,我想先跑起来这个程序,带不带颜色无

所谓,于是将Ctxt类更改为如下:

class Ctxt
	BG_BRIGHT = 0
	BG_WHITE = 0
	FG_RED = 0
	FG_BRIGHT = 0
	FG_GREEN = 0
	def method_missing(name,*arg)
		case name
			when :color
				printf(arg[0])
			else
				puts "unknow func for Ctxt..."
		end
	end
end

     不管啥颜色,一律白色printf,几个常量统统忽略。

    在终端下执行,发现中文是乱码,遂将终端使用偏好中的文字编码改为GBK,

正常鸟。

    现在添加Mac OS X终端的彩色显示功能。下载highline gem:

    gem list --remote highline

    gem install highline

    在源代码中包含 :

    require 'highline/import'

    重构Ctxt类如下:

    

class Ctxt
	@@ct = HighLine.new
	
	def color(msg,ft)
		printf @@ct.color(msg,ft)
	end
end

    接下来为了以后的扩展性和DRY原则,将源代码中的Ctxt常量改为Highline常量,

并将|符号改为+,因为HighLine常量不是整数类型的。

def self.show(card)
	case type(card)
		when "小鬼","黑桃","梅花"
			@@ct.color(card,HighLine::ON_BRIGHT_WHITE+HighLine::BLACK)
		when "大鬼","红桃","方块"
			@@ct.color(card,HighLine::ON_BRIGHT_WHITE+HighLine::BRIGHT_RED)
		else
			raise "unknow type!!!"
	end
  end

    保存,运行,一切OK鸟!!!:)


    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值