Mysz w teybie graficznym

0

Siemka pracuje w FreePascal'u mam problem jak rozpoznacz czy w trybie graficznym został nacisniety lewy klawisz myszy :)

InitGraph(karta,tryb,''); jakby ktoś nie wiedział

0

wpadnij czasem na google.pl
http://www.pascal.eu.org/lekcja7.htm#mycha

0

A czy trzeba do tego uzywac Assemblera ??

0

A czy trzeba do tego uzywac Assemblera ??

a w czym ci on przeszkadza ? skompiluj z tego biblioteke i zapomnij z czego to korzysta.... Biblioteka CRT też była w asmie pisana, ale to w niczym nie przeszkadza

pozdrawiam Milka

0

Niestety nie działa nie wiem dlaczego. Mam mysz.pas nie wiem dlaczego nie robiło mi tpu ale program czyta jak dam uses mysz;

Kawałek programu

program kostka;
uses Crt,graph,mysz;
var
        liczba,i:integer;
        x,y,p:word;
/....../
ustawmysz(1,1,GetMaxX,GetMaxY);
pokazmysz();
repeat
pobierzmysz(x,y,p);
if (p=1) then
begin
losuj();
rysuj(liczba);
write(x);
end;
 until keypressed;

Biblioteka:

unit mysz;
interface
uses crt,dos;

procedure pokazmysz();
procedure pobierzmysz(var x,y,butt:word);
procedure ustawmysz(x1,y1,x2,y2:word);

implementation
procedure pokazmysz;
var r:registers;
begin
r.ax:=$0001;
Intr($33,r);
end;
procedure pobierzmysz(var x,y,butt:word);
var r:registers;
begin
        r.ax:=$0003;
        Intr($33,r);
        x:=r.cx;
        y:=r.dx;
        butt:=r.bx
end;
procedure ustawmysz(x1,y1,x2,y2:word);
var r:registers;
begin
r.ax:=$0007;
r.cx:=x1;
r.dx:=x2;
Intr($33,r);
r.ax:=$0008;
r.cx:=y1;
r.dx:=y2;
Intr($33,r);
end;
begin
end.

Aha nie wiem czy to wazne mam win XP. Pracuje na Free Pascalu.

0

kompilator powinien pokazać błąd na

procedure pokazmysz();

powinno być:

procedure pokazmysz;

i wtedy ładnie się kompiluje

0

Zrobiłem tak i dalej nie ma tpu :( moze coś zle robie moze trzeba gdzies inaczej kompilowac :(

0

hmm.. znajomy kodzik :)

Siemka pracuje w FreePascal'u mam problem jak rozpoznacz czy w trybie graficznym został nacisniety lewy klawisz myszy :)

jak widzisz w parametrze pobierzmysz masz 3 zwracajace zmienne. Pierwsze 2 to pozycja a 3 to klawisz myszki.
aby sprawdzic czy zostal wcisniety:
if p=1 then....
jakie klawisze to podaje na oko... musislby sprawdzic dokladnie
0-brak
1-lewy
2-prawy
3-srodkowy
4-lewy+prawy
5-lewy+srodkowy
6-prawy+srodkowy
7-wszystkie naraz

0

Mam tak przeciez jak bys nie zobaczył. Aha Thx Milka za ten tpu ale pascal go nie widzi :( wrzucilem go do win32 i nietsty nie wykrywa go :(
Kod programu wszsytko działa tylko chcĘ zrobic ze po nacisnieciu na klawisz losuj wywołują sie te procki losuj i rysuj

program kostka;
uses Crt,graph,mysz;
var
        liczba,i:integer;
        x,y,p:word;
(*Losuje liczbe z przedzialu 1-6*)

procedure losuj();
begin
randomize();
liczba:=random(6)+1;
end;
procedure rysuj(l:integer);
var
        karta,tryb:integer;
begin
DetectGraph(karta,tryb);
InitGraph(karta,tryb,'');
SetColor(4);
SetFillStyle(1,4);
bar3d(GetMaxx div 2 - 100,GetMaxY div 2 - 100,GetMaxX div 2 + 100,GetMaxY div 2 +100,80,true);
SetColor(white);
for i:=1 to liczba do
begin
//Jesli jedno oczko
if liczba=1 then Circle(GetMaxX div 2,GetMaxY div 2,10);
//Jesli dwa oczka
if liczba=2 then begin
Circle(GetMaxX div 2,GetMaxY div 2-80,10);
if i=2 then Circle(GetMaxX div 2,GetMaxY div 2+80,10);
end;
//Jesli trzy oczka
if liczba=3 then begin
Circle(GetMaxX div 2,GetMaxY div 2-66,10);
if i=2 then Circle(GetMaxX div 2,GetMaxY div 2,10);
if i=3 then Circle(GetMaxX div 2,GetMaxY div 2+66,10);
end;
//Jesli cztery oczka
if liczba=4 then begin
Circle(GetMaxX div 2-80,GetMaxY div 2-80,10);
if i=2 then Circle(GetMaxX div 2-80,GetMaxY div 2+80,10);
if i=3 then Circle(GetMaxX div 2+80,GetMaxY div 2-80,10);
if i=4 then Circle(GetMaxX div 2+80,GetMaxY div 2+80,10);
end;
//Jesli piec oczek
if liczba=5 then begin
Circle(GetMaxX div 2-80,GetMaxY div 2-80,10);
if i=2 then Circle(GetMaxX div 2-80,GetMaxY div 2+80,10);
if i=3 then Circle(GetMaxX div 2+80,GetMaxY div 2-80,10);
if i=4 then Circle(GetMaxX div 2+80,GetMaxY div 2+80,10);
if i=5 then Circle(GetMaxX div 2,GetMaxY div 2,10);
end;
//Jesli szesc oczek
if liczba=6 then begin
Circle(GetMaxX div 2-80,GetMaxY div 2-66,10);
if i=2 then Circle(GetMaxX div 2-80,GetMaxY div 2,10);
if i=3 then Circle(GetMaxX div 2-80,GetMaxY div 2+66,10);
if i=4 then Circle(GetMaxX div 2+80,GetMaxY div 2-66,10);
if i=5 then Circle(GetMaxX div 2+80,GetMaxY div 2,10);
if i=6 then Circle(GetMaxX div 2+80,GetMaxY div 2+66,10);
end;
Bar(GetMaxX div 2-100,GetMaxY div 2+200,GetMaxX div 2 +100,GetMaxY div 2+250);
OutTextXY(GetMaxX div 2-20,GetMaxY div 2+220,'Losuj');
end;
end;
begin
losuj();
rysuj(liczba);
ustawmysz(1,1,GetMaxX,GetMaxY);
pokazmysz;
repeat
pobierzmysz(x,y,p);
//and (x>GetMaxX div 2-100) and (y>GetMaxY div 2+200) AND (x<GetMaxX div 2 +100) and (y<GetMaxY div 2+250)
if (p=1)  then
begin
losuj();
rysuj(liczba);
end;
until keypressed;
end.

0

zaiste sprawdzanie masz...
wiec co za problem?
domyslam sie ze chcesz klikac na pewnien "guzik" ? (czyt. pewny narysowany prostokacik)

wtedy sprawdzasz czy mysz znajduje sie w tym prostokacie....
if x>0 and x<100 and y>10 and y<30
sprawdz czy mysz jest w prostokacie 100x20 oddalony o 10px od gornej krawedzi.

oto chodzi? :/

widze tez ze tryb graficzny ustawiasz dopiero w czasie rysowania... wiec po co sprawdzac myszke w trybie tekstowym? jak mniemam wtedy operujesz na tekscie a nie myszce

//skompiluj mysz.pas .... oczywiscie sie nie uruchomi ale TPU sie utworzy.. jesli bedzie jakis blad to podaj.....

0

tak w komentarzu jest ten prostokąt nie dałem go na razie bo mysz mi nie działa nie rozpoznaje kliknięcia. Moze to przez to ze nie widzi pliku tpu !! Tylko musi byc mysz.pas

Nie da rady kurcze :( Biore Compile Alt+F9 i nic pkazuje sie okienko sie sie udało i koniec a pliku tpu nie ma. Dawałem tez Run ale nie mozne uruchomic tylko unit a musi byc program przeciez :(

Dobra ale to niewazne Milka mi skompilowała do tpu ale pascal nie widzi tego. Mam plik tpu tam gdzie graph.tpu do uses dodaje mysz,graph,crt; i nie widzi. Nie mozna znaleŹĆ biblioteki :(

0

nie korzystałem z FP (to co napisze na pewno działa dla TP 7.1), ale upewnij się że plik na pewno ma być tworzony na dysku (compile->destination) oraz czy katalogi są dobrze ustawione (options->directories)

Ps PawelB:tak na marginesie to jestem MALE (not FEMALE)

0

nie ma sily zeby nie dzialalo...
przynajmniej to co ja napisalem dzialac winno bez problemu
dam Ci linka do mojej prostej gry.. jednakze jest tam to... czyli butony z klikaniem na nie myszka, zobacz jak to wyglada (identycznie jak napisalem :)) :
http://members.lycos.co.uk/wesoledi/Labir.exe

co do modulow... wgraj je do katalogu z programem.
warto tez zobaczyc co masz ustawione w "directories" w opcjach

0

Nie mam ustawiony zadnych katalogów które to która opcja odpowiada za tpu.

Twoja gra nie działa mi na XP :( zresztą tak jak Turbo Pascal 7.7 dlatego mam Free Pascala, Wysle wam na maila pasy i zobaczycie. Moze to tylko u mnie nie działa chodzi o to zeby po klikniecuy na przycisk losuj znowu wywołała sie procedura losująca :)

0

<font size="4"> +1</span>

Sorka za 2 posty pod sobą ale musze.]

A więc sprawa wygląda tak znalazłem takie kodzik

program x;
uses
  crt,graph,dos;
var
 ster: Integer;
 karta: Integer;
 blad: Integer;

procedure mysz;
var
  regs: registers;
begin
  regs.ax:=0;
  intr($33,regs);
  if regs.ax=0 then
  begin
    writeln('brak sterownika myszy');
    halt;
  end;
  regs.ax:=1;
  intr($33,regs);
end;

begin
 ster := Detect;
 InitGraph(ster, karta,'');
 blad := GraphResult;
 if blad = grOk then
 begin  { grafika }
   mysz;
   Line(0, 0, GetMaxX, GetMaxY);
   Readln;
   CloseGraph;
 end
 else
   Writeln('Graphics error:', GraphErrorMsg(blad));
end.

I sie okazało ze nie mam sterownika myszy !! Dlatego tamto mi nie działało !!. Jak moge nie miec sterownika skoro mi mysz działa :D Moze tzreba jakies stery zainstalowac dodadkowe.

A tak à propos dzlaczego nie działają mi wasze progsy na win XP które robicie w TP ??

I jak mam kurde odpalic zwykłego TUrbo Pascala na Win XP ??

0

U mnie na przykład jak pod XP odpalam Turbo Pascala to mi działa (chociaż WOOOLNO), ale jak tylko włączę pełny ekran, to się wiesza...

0

I sie okazało ze nie mam sterownika myszy !! Dlatego tamto mi nie działało !!. Jak moge nie miec sterownika skoro mi mysz działa :D Moze tzreba jakies stery zainstalowac dodadkowe.

Poszukaj pliku Mouse.com Logitecha, Win 3.x z niego korzystał

A tak à propos dzlaczego nie działają mi wasze progsy na win XP które robicie w TP ??

I jak mam kurde odpalic zwykłego TUrbo Pascala na Win XP ??

Jeżeli masz FAT-a, ładuj z dysku startowego, dodaj do Autoexec.bat linijkę Mouse.com to będziesz miał Od razu obsługę myszki, mozesz jeszcze dać żeby Od razu ładował ci TP.

Nie wiem, czy WinXP ma tryb zgodności dla aplikacji 16-bitowych, ale sprawdź, to czasami pomaga.

Dla jasności, TP śmiga bez problemów na Win9x.

// Wiele dosowych programów nie da się odpalić na WinXP (TP nie jest chyba pod tym względem inny), ludzie korzystają z np. DosBoxa, dla emulacji starszej maszyny, mi by się przydał emulator w drugą stronę :D

0

ja mam XP nic dodatkowego do mychy nie instalowałem i wszystko działa - nawet TP
spróbuj na zakładce tryb zgodności zmienić na win9x

Ps. prog, który ci wysłałem może nie działać, bo masz sterowniki do bgi gdzieś inndziej niż ja - ja mam w e:\pascal\bgi

0

Wygląda to jak jak odpalam TP 7.7 albo inne aplikacje które od was mam

user image'

Hehe zrobiłem działa mi juz :D mialem plik autoexec.nt w katalogu repair nie wiem dlaczego przeniosłem do system32 i wsio smiga :D

Ale nadal brak jest sterownika myszy :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1