forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Клетки! (http://forum.boolean.name/showthread.php?t=4010)

Черный Лорд 26.07.2007 15:17

Клетки!
 
Как нарисовать клетки типа таких которые в игре сапере сапере. А так же сделать курсор который будет переходить с одной клетки на другую.:SOS:

ViNT 26.07.2007 23:44

Re: Клетки!
 
Можно так:
Код:


program NewProject;
var
x,y:integer;
ix,iy,oix,oiy:integer;
key:integer;

procedure drawbutton(x,y,w,h:integer;pressed:boolean);
begin
setcolor(128,128,128);
fillrect(x,y,w,h);
if pressed then
begin
setcolor(0,0,0);
drawline(x,y,x+w,y);
drawline(x,y,x,y+h);
setcolor(255,255,255);
drawline(x+w,y+h,x+w,y);
drawline(x+w,y+h,x,y+h);
end;

if not pressed then
begin
setcolor(255,255,255);
drawline(x,y,x+w,y);
drawline(x,y,x,y+h);
setcolor(0,0,0);
drawline(x+w,y+h,x+w,y);
drawline(x+w,y+h,x,y+h);
end;
end;


begin
iy:=1;
ix:=1;
oix:=1;
oiy:=1;
for y:= 1 to 10 do
for x:= 1 to 10 do
begin
drawbutton(x*10,y*10,9,9,false);
end;
repaint;
repeat

key:=getkeyclicked;
if key=ke_key6 then ix:=ix+1;
if key=ke_key4 then ix:=ix-1;
if key=ke_key2 then iy:=iy-1;
if key=ke_key8 then iy:=iy+1;
if key<>ke_none then
begin
drawbutton(ix*10,iy*10,9,9,true);
drawbutton(oix*10,oiy*10,9,9,false);
oix:=ix;
oiy:=iy;
repaint;
end;
delay(200);
key:=ke_none;
until key=ke_key0;

repaint;       
delay(20000);
end.


Черный Лорд 27.07.2007 18:58

Re: Клетки!
 
мне нужно создания клеток не в самой игре и такого курсора, а также
напиши как изменять рисунок ее ( этой клетки). За ранее благодарю.

ViNT 28.07.2007 02:01

Re: Клетки!
 
Я не совсем понял, ты хочешь рисовать клетки динамически или выводить готовые изображеня?

Черный Лорд 28.07.2007 10:47

Re: Клетки!
 
Когда заходишь в телефоного сапера то там уже нарисованы клетки и по ним можно передвигать курсор. Я понял как он работает. Ты мне напеши мне код, чтобы эти клетки были нарисованы и код, чтобы менять на этих кнопках рисунки.

IVenoMI 28.07.2007 16:41

Re: Клетки!
 
Ничего не понятно, сформуоируй просьбу более точно...

Черный Лорд 29.07.2007 10:22

Re: Клетки!
 
Как нарисовать клетки (такиеже как в сапере). А в самой игре если ты нажал например на 5 клетку по горизонтале и вторую по вертикале, то загружается каойнибудь рисунок.

ViNT 30.07.2007 00:10

Re: Клетки!
 
Если рисунок должен выводиться на клетку, то можно так:
Код:

program NewProject;
var
x,y:integer;
ix,iy,oix,oiy:integer;
key:integer;

procedure drawbutton(x,y,w,h:integer;pressed:boolean);
begin
setcolor(128,128,128);
fillrect(x,y,w,h);
if pressed then
begin
setcolor(0,0,0);
drawline(x,y,x+w,y);
drawline(x,y,x,y+h);
setcolor(255,255,255);
drawline(x+w,y+h,x+w,y);
drawline(x+w,y+h,x,y+h);
end;

if not pressed then
begin
setcolor(255,255,255);
drawline(x,y,x+w,y);
drawline(x,y,x,y+h);
setcolor(0,0,0);
drawline(x+w,y+h,x+w,y);
drawline(x+w,y+h,x,y+h);
end;
end;


begin
iy:=1;
ix:=1;
oix:=1;
oiy:=1;
for y:= 1 to 10 do
for x:= 1 to 10 do
begin
drawbutton(x*10,y*10,9,9,false);
end;
repaint;
repeat

key:=getkeyclicked;
if key=ke_key6 then ix:=ix+1;
if key=ke_key4 then ix:=ix-1;
if key=ke_key2 then iy:=iy-1;
if key=ke_key8 then iy:=iy+1;

if key<>ke_none then
begin
drawbutton(ix*10,iy*10,9,9,true);
drawbutton(oix*10,oiy*10,9,9,false);
oix:=ix;
oiy:=iy;
repaint;
end;

if key=ke_key5 then
begin
drawimage(loadimage('/mine.png'),ix*10+1,iy*10+1);
repaint;
end;

delay(200);
key:=ke_none;
until key=ke_key0;

repaint;       
delay(20000);
end.


fads 30.07.2007 10:38

Re: Клетки!
 
А нельзя представить поле с клетками как двумерный массив? Я думаю так будет проще

ViNT 30.07.2007 13:39

Re: Клетки!
 
Можно, а зачем? Если каждая клетка имеет какие-то свойства, то так и надо, а если просто выводить клетки то проще по координатам, как в моем коде.

Черный Лорд 01.08.2007 10:42

Re: Клетки!
 
Я наверное плохо объясняю. Ладно объясню более подробно.
Заходим в игру и видим уже нарисованное поле. Ну например 10 на 10, то есть 100 клеток. В верхнем левом углу находится например красный квадрат(это будет наш курсор) нажимаем кнопку в право и он передвигается на следующею клетку которая находится с права. Нажимаем предположим 5 и высвечивается окно в котором нас просят выбрать картинку из предложенных. И та картинка которую мы выбрали появляться на том месте где у нас курсор. Вот и все чего я хочу. Надеюсь так понятнее.


Часовой пояс GMT +4, время: 00:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot