将文本添加到Smalltalk单元格

时间:2018-04-13 07:08:44

标签: smalltalk pharo

我正在做一个项目,我正在将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

1 个答案:

答案 0 :(得分:0)

也许你是以过于复杂的方式接近你的问题。您需要重载两个选择器并完成(不是使用扫雷,而是使用Cell上的字符串)。

我已经使用了原始代码,只是应用了标签。

您必须重新定义您正在使用的turnOn中的turnOffSimpleSwitchMorph,并应用可在超类中找到的选择器label: { {1}}。您甚至可以使用与超类中相同的逻辑。

SimpleButtonMorph你可以做(​​为他们创建一个新协议LOCell):

switching

现在运行示例时,turnOn super turnOn. self label: 'X' turnOff super turnOff. self label: '' 字符串将添加到已打开的单元格中。

看起来像这样:

协议:

the protocol

变形现在:

the "morph"