我正在做一个项目,我正在将Pharo中的Lights Out程序改编为Minesweeper程序,但是我无法弄清楚如何向单元格添加文本以便它显示在单击上就像它开启时的颜色变化一样#34;我到处寻找一个没有骰子的方法。 初始化方法:
initialize
super initialize.
self label: ''.
self borderWidth: 4.
mineState := false.
cellValue := 0.
bounds := 0@0 corner: 32@32.
offColor := Color paleYellow.
onColor := Color paleBlue darker.
self useSquareCorners.
self turnOff
新细胞代码:
newCellAt: i at: j
"Create a cell for position (i,j) and add it to my on-screen
representation at the appropriate screen position. Answer the new cell"
| c origin |
c := MFCell new.
"self labelString: 'hidden'."
origin := self innerBounds origin.
self addMorph: c.
c position: ((i - 1) * c width) @ ((j - 1) * c height) + origin.
c mouseAction: [self checkMineAt: i at: j].
^ c
答案 0 :(得分:0)
也许你是以过于复杂的方式接近你的问题。您需要重载两个选择器并完成(不是使用扫雷,而是使用Cell上的字符串)。
我已经使用了原始代码,只是应用了标签。
您必须重新定义您正在使用的turnOn
中的turnOff
和SimpleSwitchMorph
,并应用可在超类中找到的选择器label:
{ {1}}。您甚至可以使用与超类中相同的逻辑。
在SimpleButtonMorph
你可以做(为他们创建一个新协议LOCell
):
switching
现在运行示例时,turnOn
super turnOn.
self label: 'X'
turnOff
super turnOff.
self label: ''
字符串将添加到已打开的单元格中。
看起来像这样:
协议:
变形现在: