|
Основной форум Сюда все проблемы связанные с программированием. |
26.07.2007, 15:17
|
#1
|
Оператор ЭВМ
Регистрация: 26.07.2007
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Клетки!
Как нарисовать клетки типа таких которые в игре сапере сапере. А так же сделать курсор который будет переходить с одной клетки на другую.
|
(Offline)
|
|
26.07.2007, 23:44
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
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.
|
(Offline)
|
|
27.07.2007, 18:58
|
#3
|
Оператор ЭВМ
Регистрация: 26.07.2007
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Клетки!
мне нужно создания клеток не в самой игре и такого курсора, а также
напиши как изменять рисунок ее ( этой клетки). За ранее благодарю.
|
(Offline)
|
|
28.07.2007, 02:01
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Клетки!
Я не совсем понял, ты хочешь рисовать клетки динамически или выводить готовые изображеня?
|
(Offline)
|
|
28.07.2007, 10:47
|
#5
|
Оператор ЭВМ
Регистрация: 26.07.2007
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Клетки!
Когда заходишь в телефоного сапера то там уже нарисованы клетки и по ним можно передвигать курсор. Я понял как он работает. Ты мне напеши мне код, чтобы эти клетки были нарисованы и код, чтобы менять на этих кнопках рисунки.
|
(Offline)
|
|
28.07.2007, 16:41
|
#6
|
Знающий
Регистрация: 10.08.2006
Сообщений: 254
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Клетки!
Ничего не понятно, сформуоируй просьбу более точно...
|
(Offline)
|
|
29.07.2007, 10:22
|
#7
|
Оператор ЭВМ
Регистрация: 26.07.2007
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Клетки!
Как нарисовать клетки (такиеже как в сапере). А в самой игре если ты нажал например на 5 клетку по горизонтале и вторую по вертикале, то загружается каойнибудь рисунок.
|
(Offline)
|
|
30.07.2007, 00:10
|
#8
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
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.
|
(Offline)
|
|
30.07.2007, 10:38
|
#9
|
Оператор ЭВМ
Регистрация: 08.03.2007
Сообщений: 20
Написано одно полезное сообщение
|
Re: Клетки!
А нельзя представить поле с клетками как двумерный массив? Я думаю так будет проще
|
(Offline)
|
|
30.07.2007, 13:39
|
#10
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Клетки!
Можно, а зачем? Если каждая клетка имеет какие-то свойства, то так и надо, а если просто выводить клетки то проще по координатам, как в моем коде.
|
(Offline)
|
|
01.08.2007, 10:42
|
#11
|
Оператор ЭВМ
Регистрация: 26.07.2007
Сообщений: 29
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Клетки!
Я наверное плохо объясняю. Ладно объясню более подробно.
Заходим в игру и видим уже нарисованное поле. Ну например 10 на 10, то есть 100 клеток. В верхнем левом углу находится например красный квадрат(это будет наш курсор) нажимаем кнопку в право и он передвигается на следующею клетку которая находится с права. Нажимаем предположим 5 и высвечивается окно в котором нас просят выбрать картинку из предложенных. И та картинка которую мы выбрали появляться на том месте где у нас курсор. Вот и все чего я хочу. Надеюсь так понятнее.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:11.
|