Kezdőoldal » Számítástechnika » Programozás » Hogy csináljam meg?

David134 kérdése:

Hogy csináljam meg?

Figyelt kérdés

Az a feledat hogy a képernyő tetejé van 1 tank( 'v' betű) és a képernyő alján a második.Tudnak mozogni és lőni is.De valamiért csak az első tankot rajzolja ki.

program motor;

uses crt;

var q:char;

ido:word;

tvx,tvx2,Lx,lx2,Ly,Ly2:byte;

lottem:boolean;

begin

//univerzális motor:

ido:=0;

tvx:=40;

lottem:=false;

//torpedóvető kezdőhelyzet

gotoxy(tvx,24);

write('v');

repeat

//eseményvezérlő:

q:='%'; //q semleges értéke

if keypressed then q:= readkey;

case q of

'a','A':begin

if tvx>1 then

begin

gotoxy (tvx,24);

write(' ');

tvx:=tvx-1;

gotoxy (tvx,24);

write('v');

end;

end;

'd','D': begin

if tvx<80 then

begin

gotoxy (tvx,24);

write(' ');

tvx:=tvx+1;

gotoxy (tvx,24);

write('v');

end;

end;

' ': begin

lottem:=true;

Ly:=23;

Lx:=tvx;

end; //space eset

end; //case

//időfüggő vezérlő

ido:=ido+1;

if ido=4000 then

begin

ido:=0;

if lottem then

begin

gotoxy (Lx,Ly);

write(' ');

Ly:=Ly-1;

gotoxy (Lx,Ly);

write('*');

writeln(' ');

end;

end;

until q=chr(27);

//2.tank

begin

//univerzális motor:

ido:=0;

tvx2:=23;

lottem:=false;

//torpedóvető kezdőhelyzet

gotoxy(tvx2,14);

write('v');

//eseményvezérlő:

q:='%'; //q semleges értéke

case q of

'h','H':begin

if tvx2>1 then

begin

gotoxy (tvx2,14);

write(' ');

tvx:=tvx-1;

gotoxy (tvx2,14);

write('v');

end;

end;

'j','J': begin

if tvx2<80 then

begin

gotoxy (tvx2,14);

write(' ');

tvx2:=tvx2+1;

gotoxy (tvx2,14);

write('v');

end;

lottem:=true;

end;

' ': begin

Ly2:=13;

Lx2:=tvx2;

end; //space eset

end; //case

//időfüggő vezérlő

ido:=ido+1;

if ido=4000 then

begin

ido:=0;

if lottem then

begin

gotoxy (Lx2,Ly2);

write(' ');

Ly2:=Ly2-1;

gotoxy (Lx2,Ly2);

write('*');

writeln(' ');

end;

end;

end;

end.


2016. ápr. 26. 20:48
1 2 3
 11/22 SimkoL ***** válasza:
Csak nehogy megint úgy járjak, mint amikor belinkeltem a 'Szép Pascal kódról' szóló rövid írásomat [link] és rövid időn belül töröl(tet)ve lett.
2016. ápr. 27. 11:23
Hasznos számodra ez a válasz?
 12/22 tabaki ***** válasza:

@SimkoL:

Egy követőd mindenesetre akad... Bocs, suli van, a programodat majd később megnézem.

2016. ápr. 27. 11:44
Hasznos számodra ez a válasz?
 13/22 tabaki ***** válasza:

@SimkoL:

Pöpec lett az új oldalad.

2016. ápr. 27. 14:28
Hasznos számodra ez a válasz?
 14/22 A kérdező kommentje:
Kedves válaszolók.Igen nem a legjobb a kódom,igen van még mit fejlesztenem De a tanárom nem a legsegítőkészebb és nála jó jegyet kapni nem egyszerű.Nem értem miért kell leköpködni csak azért mert nem értek valamit.Ha már ez egy olyan oldal ahol kapok választ akkor valami értelmeset szeretnék ami segít és nem az olyat hogy:"Mi a fa*nak segítesz a gyökérnek?" Tisztelet a kivételnek. Annyian előrébb jutottam hogy mostmár megjelenik mind a 2 tank de lőni és mozogni továbbra sem tudnak.
2016. ápr. 27. 15:38
 15/22 A kérdező kommentje:
Kedves válaszolók.Igen nem a legjobb a kódom,igen van még mit fejlesztenem De a tanárom nem a legsegítőkészebb és nála jó jegyet kapni nem egyszerű.Nem értem miért kell leköpködni csak azért mert nem értek valamit.Ha már ez egy olyan oldal ahol kapok választ akkor valami értelmeset szeretnék ami segít és nem az olyat hogy:"Mi a fa*nak segítesz a bénának?" Tisztelet a kivételnek.
2016. ápr. 27. 15:52
 16/22 SimkoL ***** válasza:

Off:

@tabaki:

Még töltögetem a régi cuccokat és ami újonnan felmerült - C, C++ - hoz még nem értem el -. Nulláról írtam az egészet, ezért kicsit lassan halad és merülnek még fel pici problémák.

Igyekeztem egy számomra és mások számára is elfogadható színvilágot megálmodni és értelemszerűen szétbontani a tartalmat.

Örülök, hogy tetszik, akkor tovább folytatom :)

2016. ápr. 27. 15:58
Hasznos számodra ez a válasz?
 17/22 SimkoL ***** válasza:

Kedves Kérdező !

Írtam neked mintát, beszédes változónevekkel, kommentekkel, [link] ha átnézed valószínű tudsz belőle ihletet meríteni. Továbbá újfent javaslom az elolvasását [link] mert ha aszerint készült volna könnyebb lett volna értelmezni.

2016. ápr. 27. 16:10
Hasznos számodra ez a válasz?
 18/22 tabaki ***** válasza:

„Nem értem miért kell leköpködni csak azért mert nem értek valamit.”


Bocs, de ez a való tények számodra tetszetősebb olvasata. A (tapintatosan szólván) korholást nem azért kaptad, mert a kódod egyelőre működésképtelen. Ettől még látszik rajta, hogy rengeteget kínlódtál vele, és sok részlete nem is nevezhető rossznak. Viszont két nappal ezelőtt kaptál egy csomó hasznos útmutatást, ehhez képest úgy jössz vissza, mint a Bourbonok a forradalom után, akik „semmit se tanultak, és semmit se felejtettek” (Talleyrand). Körülbelül semmit sem fogadtál meg a tanácsokból, viszont ugyanazokat a hibákat módszeresen újra elköveted. Van, akinél ez már kiveri a biztosítékot.

Nem értem, hogy ugyanazt a témát miért kellett egy újabb kérdésbe raknod, ráadásul ugyanazzal az otromba melléfogással, amire már az első kérdésnél is nyomatékosan figyelmeztettünk. A végtelenségbe nyúló kérdés rendkívül kényelmetlenné teszi a válaszadást, ráadásul, mint tapasztalhattad,

          ezen az oldalon

                    nem megoldható

                              a sorok behúzása,

ezért mindenki, aki foglalkozna a problémáddal, előbb kénytelen átszerkeszteni az egész kódodat, hogy lássa, miről van szó egyáltalán. Ezek után inkább kisebb világcsodája, hogy akad, aki megteszi.


„a tanárom nem a legsegítőkészebb”


Itt viszont azok vagyunk -- egy okkal több, hogy ne szomorítsd az életünket. Például én is megírtam azt a programot, amit SimkoL, csak ő jobban, ezért nem közlöm. Ettől még egyrészt rengeteget matattam vele, másrészt továbbra is valószínűsítem, hogy te nem pont ezt akartad, de az idomtalan méretű kérdésbe még mindig nem fért bele, hogy pontosan mit. Az előző javaslatokat nem ismétlem meg, azokat leszel szíves amott elolvasni, de egy dologra fölhívnám a figyelmedet: Nem szerencsés munkamódszer, hogy írsz egy baromi hosszú kódot, amelynek a felét sem gondoltad át, utána meg csodálkozol, hogy nem működik. A pascal nagyon alkalmas arra, hogy apró részletekben oldd meg a feladatot. Például ezt szeretnéd:

'A' esetén a felső tank balra megy

'D' esetén a felső tank jobbra megy

'J' esetén a alsó tank balra megy

'K' esetén a alsó tank jobbra megy


A program megfelelő helyén megírod a választást a kívánt eljárások nevével:


case muvelet of

'A': FelsoTankBalra;

'D': FelsoTankJobbra;

'J': AlsoTankBalra;

'K': AlsoTankJobbra;

end;


A programtörzs előtt megcsinálod hozzá ezeket az eljárásokat, amelyeknek még semmit sem kell tudniuk, például:


procedure FelsoTankBalra;

begin

end;


...stb. Mikor kész, lefordítod. Lefordul? Ha igen, van egy semmit sem csináló, de kerek egész programod, nem pedig egy félkész össze-vissza valami, amiről kérdéses, hogy majd három és fél óra múlva mint fog viselkedni az első próba alkalmával. Vagyis arra törekedj, hogy a programod minden fejlődési stádiumában lefordítható és futtatható legyen.

Elkezdheted kidolgozni, mondjuk mindegyik eljárás írja ki, hogy mit csinál:


procedure FelsoTankBalra;

begin

      WriteLn('A felső tank balra megy.');

end;


Fordítás után megint van egy kész programod, amellyel tesztelni tudod, hogy a billentyűparancsok tényleg azt teszik-e, amit elképzeltél. Ha a programod szerkezete jó, megírhatod a tényleges teendőket, eljárásonként, külön-külön. Lehet, hogy még csak az egyik tank mozgatását írtad meg, azt is csak balra, de a programod többi részével addig sem kell foglalkoznod, mert az csírájában, de készen van. Tehát, ha valami nem stimmel, akár a fordításnál, akár a működéskor, tudni fogod, hogy hol keresd a hibát.


Megeshet, hogy az eljárásokat még nem tanultátok, de ezeket a programrészeket közvetlenül az elágazásokba írva is ugyanígy fejlesztheted. Igaz, így a beszélő eljárásnevek elmaradnak, tehát ezeken a helyeket érdemes kommentelni -- mégpedig azt közölve, hogy az adott részlet mit csinál, nem pedig olyan jól hangzó, de haszontalan dolgokat, mint „univerzális motor”, „időfüggő vezérlő”, vagy „space eset”. Az utóbbi különösen tetszik: A vak is láthatja, hogy a space művel valamit, de hogy mit... Ez kábé annyira hasznos, mintha lelkiismeretesen megmagyaráznád a sorok után, hogy „matematikai művelet”, vagy „értékadás”. Azt írd oda, hogy a program szempontjából milyen feladatot lát el.

2016. ápr. 28. 00:42
Hasznos számodra ez a válasz?
 19/22 tabaki ***** válasza:

SimkoL programja eljárásokkal és kisebb módosításokkal:

[link]

2016. ápr. 28. 02:51
Hasznos számodra ez a válasz?
 20/22 tabaki ***** válasza:

Automata tankok küzdelme (ehm, van még rajta csiszolgatni való):

[link]

2016. ápr. 30. 01:46
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!