Поддавки на perl + Tk
Тему создаю для себя, чтобы задавать себе вопросы и самому на них отвечать. Буду рад критике и советам. Имею небольшое представление о Tk, но думаю моих знаний не достаточно.
Итак, вопрос №1: С чего начать?
Ответ: Думаю что для начала надо разбить задачу на более простые подзадачи, составить декомпозицию.
Вот модули на которые я разбил задачу.
1) GUI - думаю начать стоит именно с него.
а) Как расчертить доску
б) Как разместить на ней фигуры
в) Как перемещать фигуры
г) Задать правила перемещения фигур
д) Меню
е) Забиндить горячие клавиши (напр. Ctrl+Z возврат хода)
2) ИИ - ну тут ничего сложного придумывать не надо, достаточно чтобы компьютер делал ходы не противоречащие правилам
3) Сохранение и загрузка игры
4) Сетевая игра
5)...
http://www.govnokod.ru
Я пока не имею представления о том как расчертить доску и разместить на ней фигуры.
Как расположить изображение шашки над изображением клетки?
Как надожить маску на файл?
Ну вот пока все что есть но такому коду место на
Я пока не имею представления о том как расчертить доску и разместить на ней фигуры.
Код:
use strict;
use Tk;
my ($mainwindow,$f);
$mainwindow = MainWindow->new(-title => 'Checkers');
$mainwindow ->resizable(0,0);
my ($column,$row);
$column=$row=0;
my $desk_frame = $mainwindow->Frame->grid();
my $image_white = $mainwindow ->Photo(-file => 'light.bmp');
my $image_dark = $mainwindow ->Photo(-file => 'dark.bmp');
my @desk;
for my $i(0..3){
for(0..3){
$desk[$i*2][$_*2] = $desk_frame->Label(-image =>$image_white)->grid(-row => $row,-column => $column++);
$desk[$i*2][($_+1)*2] = $desk_frame->Label(-image =>$image_dark) ->grid(-row => $row,-column => $column++);
}
$row++;
$column = 0;
for(0..3){
$desk[$i*2+1][$_*2] = $desk_frame->Label(-image =>$image_dark) ->grid(-row => $row,-column => $column++);
$desk[$i*2+1][($_+1)*2] = $desk_frame->Label(-image =>$image_white)->grid(-row => $row,-column => $column++);
}
$row++;
$column = 0;
}
MainLoop;
use Tk;
my ($mainwindow,$f);
$mainwindow = MainWindow->new(-title => 'Checkers');
$mainwindow ->resizable(0,0);
my ($column,$row);
$column=$row=0;
my $desk_frame = $mainwindow->Frame->grid();
my $image_white = $mainwindow ->Photo(-file => 'light.bmp');
my $image_dark = $mainwindow ->Photo(-file => 'dark.bmp');
my @desk;
for my $i(0..3){
for(0..3){
$desk[$i*2][$_*2] = $desk_frame->Label(-image =>$image_white)->grid(-row => $row,-column => $column++);
$desk[$i*2][($_+1)*2] = $desk_frame->Label(-image =>$image_dark) ->grid(-row => $row,-column => $column++);
}
$row++;
$column = 0;
for(0..3){
$desk[$i*2+1][$_*2] = $desk_frame->Label(-image =>$image_dark) ->grid(-row => $row,-column => $column++);
$desk[$i*2+1][($_+1)*2] = $desk_frame->Label(-image =>$image_white)->grid(-row => $row,-column => $column++);
}
$row++;
$column = 0;
}
MainLoop;
Как расположить изображение шашки над изображением клетки?
Как надожить маску на файл?