Domáca úloha – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Domáca úloha – Pascal – Fórum – Programujte.comDomáca úloha – Pascal – Fórum – Programujte.com

 

Michal
~ Anonymní uživatel
683 příspěvků
6. 4. 2016   #1
-
0
-

Ahojte, prosím vás toto som bol schopný polepiť ako tak sám, mohli by ste mi pomôcť, potrebujem spraviť program v ktorom budem môcť hýbať hviezdičkou po obrazovke a ovládať ich šípkami :/ 
 

program project1;
uses crt;
var f:text;
a:array[1..100] of char;
i,pocet,x,y:integer;
procedure nacitanie;
var i:integer;
begin
assign(f,'subor');
reset(f);
while not eof(f)do
  begin
  inc(i);
  read(f,a[i]);
  end;
pocet:=i;
close(f);
end;
procedure vypis;
var i:integer;
begin
for i:=1 to pocet do
write(a[i]:2);

end;
begin
nacitanie;
vypis;
x:=20; y:=12; gotoxy(x,y); write('*');
for i:=1 to pocet do
begin
case a[i] of
'H': dec(y);
'D': inc(y);
'L': dec(x);
'P': inc(x);
'Q': begin dec(y); inc(x); end;
'W': begin dec(x); inc(y); end;
'E': begin inc(y); dec(x); end;
'R': begin inc(x); dec(y); end;
end;
gotoxy(x,y); write('*'); delay(50);
end;
end.          
Nahlásit jako SPAM
IP: 188.121.181.–
Mircosoft+1
Věrný člen
6. 4. 2016   #2
-
0
-

A jak to souvisí s tím kódem, který jsi sem napsal? Ten dělá něco úplně jiného...

Jestli chceš hýbat hvězdičkou po obrazovce pomocí šipek, mohl by program vypadat nějak takhle:

- Souřadnicím hvězdičky (proměnné x a y) nastav nějaké výchozí hodnoty.
- Cyklus:
-- Čekej na stisk klávesy a ulož si ji do proměnné typu char (klavesa:=Readkey).
-- Podle toho, co je to za klávesu, uprav souřadnice hvězdičky (case klavesa of... inc, dec atd.).
-- Zkontroluj, jestli souřadnice neutekly mimo obrazovku a v případě potřeby je uprav (if x<1 then x:=1 atd.). Obvyklé rozměry obrazovky v textovém režimu jsou 80x25 nebo 80x50 znaků; použij to, co máš.
-- Smaž obrazovku (Clrscr).
-- Vykresli hvězdičku na souřadnicích x,y (Gotoxy, Write).
-- Jestli klávesa byla třeba Escape (#27), ukonči cyklus.

ASCII kódy šipek: doleva #75, doprava #77, nahoru #72 a dolů #80. Ve skutečnosti ze šipek dostaneš dva znaky: #0 a pak teprve tohle. Ty nuly pro začátek stačí ignorovat.

Nahlásit jako SPAM
IP: 212.79.106.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
peter
~ Anonymní uživatel
4016 příspěvků
7. 4. 2016   #3
-
0
-

 To jsem vykopiroval z nejakeho forka, co jsem nasel googlem. To je zaklad, ktery tam musis mit. Klidne to nech v teto podobe, jen dopis procedury.

Uses Crt;

Var
  key : Char;

Begin
  WriteLn('Press any key (ESC to quit)');
    Repeat
      key := upcase(readkey);
      case key of
        #75: GoLeft();
        #80: GoDown();
        #72: GoUp();
        #77: GoRight();
      end;
    end;
  Until (key = #27); {ESC}
end.

To, co tam mas ty je uplne jiny priklad, ktery pracuje se souborem. Ale je tam ta funkcnost, ze musis zmacknout klavesu, aspon.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:8525:bf...–
peter
~ Anonymní uživatel
4016 příspěvků
7. 4. 2016   #4
-
0
-

Jo, jen si nejsem jisty, jestli tam pred cisly ma nebo nema byt krizek. Pascal uz jsem nepouzival 20 let.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:8525:bf...–
Michal
~ Anonymní uživatel
683 příspěvků
7. 4. 2016   #5
-
0
-

Ahojte :) No dakujem :) mám to takto 

program project1;
uses crt;
 var x,y:integer;
     ch:char;
begin

x:=40; y:=13;
gotoxy(x,y);
write('HIHI');

repeat
ch:=ReadKey;
  case ch of
	'a' : begin; clrscr; x:=x-1; gotoxy(x,y); if x<1 then x:=1; write('HIHI'); end; //dolava
	'd' : begin; clrscr; x:=x+1; gotoxy(x,y); if x>80 then x:=80; write('HIHI'); end; //doprava
	'w' : begin; clrscr; y:=y-1; gotoxy(x,y); if y<1 then y:=1; write('HIHI'); end; //hore
	's' : begin; clrscr; y:=y+1; gotoxy(x,y); if y>25 then y:=25; write('HIHI'); end; //dole
        end;
until   ch='p'; //nejak to ukončit,,,neviem ako (unsure)
clrscr;
x:=40; y:=13;
gotoxy(x,y);
write('MUHAHA');
readln;
end.
Nahlásit jako SPAM
IP: 188.121.181.–
y
~ Anonymní uživatel
2 příspěvky
8. 4. 2016   #6
-
0
-

To gotoxy asi až potom, co ty souřadnice podržíš v rozsahu. Neštve tě kolikrát se ti tam opakuje stejný kód?

case ch of
'a' : if x >  1 then dec(x);
'd' : if x < 80 then inc(x);
'w' : if y >  1 then dec(y);
's' : if y < 25 then inc(y);
end;
clrscr; gotoxy(x,y); write('HIHI');
Nahlásit jako SPAM
IP: 213.211.51.–
Ja
~ Anonymní uživatel
59 příspěvků
8. 4. 2016   #7
-
0
-

Ahoj, 

neporadil by mi někdo jak to zapsat, tak abych to nemusela pořád dokola opisovat?

Připojen obrázek.

Nahlásit jako SPAM
IP: 78.45.97.–
KIIV
~ Moderátor
+43
God of flame
8. 4. 2016   #8
-
0
-

#7 Ja
to patri k predchozimu tematu?

Akorat si to nebude pamatovat predchozi stavy, ale treba nejsou ani potreba. Jinak pole

for i:=2 to n do begin
  v := v + D(i+1) + opr1; 
end;
Nahlásit jako SPAM
IP: 212.47.3.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Uloha 3 — založil R4STO

Úloha — založil Jozef123

Uloha 4 — založil Sharp

Uloha — založil ukulele

úloha — založil LuckaH

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý