Как стать автором
Обновить

Пятнашки на TCL в 10 строк

Время на прочтение 1 мин
Количество просмотров 6.3K
Реверси в 64 строки уже есть. Теперь напишем пятнашки.
image



Исходный код (upuzzle.tcl)
package require Tk
foreach {p} {7 2 10 11 5 4 9 12 13 8 3 14 15 1 6} {i} {0 1 2 3 4 5 6 7 8 9 10 11 12 13 14} {
	button .$p -relief solid -bd 1 -width 8 -height 4 -text $p -command "move $p"
	grid   .$p -row [expr {$i/4}] -column [expr {$i%4}] -padx 1 -pady 1}
proc move {b} {
	lassign [list [dict get [grid info .$b] -column] [dict get [grid info .$b] -row]] x y
	foreach {ix iy} {0 -1 0 1 -1 0 1 0} {
		lassign [list [expr {$x+$ix}] [expr {$y+$iy}]] i j
		if {$i>=0 && $i<=3 && $j>=0 && $j<=3 && ![llength [grid slaves . -col $i -row $j]]} {
			grid configure .$b -column $i -row $j}}}


В качестве костяшек используются обычные кнопки. Они упаковываются в окне с помощью менеджера grid, где положение виджета задается номером строки и столбца виртуальной таблицы.

Процедура move для заданной костяшки проверяет все возможные перемещения (вверх, вниз, влево, вправо), и при необходимости меняет положение кнопки в таблице.

image

Ссылки:
Пятнашки на Википедии
ActiveTcl (дистрибутив Tcl для Windows/OSX/Linux)
eTcl (Windows Mobile)



Альтернативы от хабраюзеров:
Игра «пятнашки» от michurin
Пятнашки на Midp1.0-2.0 от SKYnv
Теги:
Хабы:
+14
Комментарии 18
Комментарии Комментарии 18

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн