MIDlet Pascal
Поиск по сайту
Форма входа

Суббота, 20.04.2024, 11.17.05
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
помощь - Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Midlet Pascal » Вопросы по MidletPascal » помощь (не работает)
помощь
LincorДата: Понедельник, 18.03.2013, 19.40.10 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Offline
программа не работает при попытке установить прямоугольник.

Код
program SelectIT;
var net:array[0..5,0..5] of boolean; //сетка
x,y:integer; //координаты курсора
i,j,key:integer;

begin
repeat
setcolor(0,0,0);
fillrect(0,0,getwidth,getheight);
setcolor(255,255,255);
for i:=0 to 5 do
for j:=0 to 4 do
drawrect(i*getwidth/5,j*getwidth/5,getwidth/5,getwidth/5);
key:=keytoaction(getkeyclicked);
if key=GA_RIGHT then if x<(getwidth-getwidth/5) then x:=x+getwidth/5;
if key=GA_LEFT then if x>0 then x:=x-getwidth/5;
if key=GA_UP then if y>0 then y:=y-getwidth/5;
if key=GA_DOWN then if Y<(getwidth-getwidth/5) then y:=y+getwidth/5;
if key=GA_FIRE then if net[x/5,y/5] then drawline(x,y,x+getwidth/5,y+getwidth/5) else
fillrect(x,y,getwidth/5,getwidth/5);
setcolor(255,0,0);
drawrect(x,y,getwidth/5,getwidth/5);
repaint;
until false;
end.
 
WladymyrДата: Вторник, 19.03.2013, 05.52.41 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 15
Репутация: 1
Статус: Offline
Цитата (Lincor)
программа не работает при попытке установить прямоугольник.Код
program SelectIT;
var net:array[0..5,0..5] of boolean; //сетка
x,y:integer; //координаты курсора
i,j,key:integer;

begin
repeat
setcolor(0,0,0);
fillrect(0,0,getwidth,getheight);
setcolor(255,255,255);
for i:=0 to 5 do
for j:=0 to 4 do
drawrect(i*getwidth/5,j*getwidth/5,getwidth/5,getwidth/5);
key:=keytoaction(getkeyclicked);
if key=GA_RIGHT then if x<(getwidth-getwidth/5) then x:=x+getwidth/5;
if key=GA_LEFT then if x>0 then x:=x-getwidth/5;
if key=GA_UP then if y>0 then y:=y-getwidth/5;
if key=GA_DOWN then if Y<(getwidth-getwidth/5) then y:=y+getwidth/5;
if key=GA_FIRE then if net[x/5,y/5] then drawline(x,y,x+getwidth/5,y+getwidth/5) else
fillrect(x,y,getwidth/5,getwidth/5);
setcolor(255,0,0);
drawrect(x,y,getwidth/5,getwidth/5);
repaint;
until false;
end.

Вся проблема в строке преобразования х,у в номер массива квадрата. if key=GA_FIRE then if net[x/5,y/5] всё дело в том что тут х и у делятсяна 5.В телефоне 240х320 если выбрать последнюю клетку то х и у ровняются 192, а 192/5=38,4. А такого масива нету, по этом у нужно мудрить с шириной экрана.Вот если сделать эту строку вот так if key=GA_FIRE then if net[x/(getwidth/5),y/(getwidth/5)] , то всё работает без проблем.
 
Форум » Midlet Pascal » Вопросы по MidletPascal » помощь (не работает)
  • Страница 1 из 1
  • 1
Поиск:

Wladymyr © 2024
Создать бесплатный сайт с uCoz