Jednoducha hra neco jako alpha verze hry snake pomoc – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jednoducha hra neco jako alpha verze hry snake pomoc – Pascal – Fórum – Programujte.comJednoducha hra neco jako alpha verze hry snake pomoc – Pascal – Fórum – Programujte.com

 

27. 2. 2012   #1
-
0
-

Dobrý den, potřebuji vaši pomoc jak vylepšit uplně hloupoučkou hru, která jede ale nedělá to co by měla, hra by měla fungovat tak, že chodím panáčkem (#1) =  smajlík,lze se pohybovat všemi směry po obrazovce, ale teď nastává ten problém generuji hvezdicky ( * ), která se zobrazuje náhodně na obrazovce, ale chyba je v tom, že nejde se samostatně pohybovat aniž by to neovlivnilo průběh generování hvězdičky myslím tím ten delay a automaticke generovani ,hra by se měla ukončit když sním panáčkem tu hvězdičku, pokud jste to z mojeho slovního průjmu nepochopili tak tady přikládam zdroják, diký za každou pomoc : 

program panacek;
uses crt;
var  x,y,a,b,n:integer;
     c,k:char;

procedure konec;
begin
Writeln('KONEC HRY');
delay(1000);
end;

procedure novahra;
begin
     clrscr;
     gotoxy(40,12);
     repeat
           k:=readkey;
                case k of
                     'w': y:=y-1;
                     's': y:=y+1;
                     'a': x:=x-1;
                     'd': x:=x+1;
                end;
           clrscr;
           gotoxy(x,y);
           writeln(#1);
           if x>80 then x:=80;
           if y>24 then y:=24;
           if x<1 then x:=1;
           if y<1 then y:=1;
           a:=random(79);
           b:=random(23);
           randomize;
           if a>80 then a:=80;
           if a<1 then a:=1;
           if b>24 then b:=24;
           if b<1 then b:=1;
           gotoxy(a,b);
           writeln('*');
     until k=chr(27);
     if (a=x) and (b=y) then konec;
end;
begin
     clrscr;
     Writeln('Vitejte ve hre panacek');
     Writeln('');
     Writeln('Princip hry');
     Writeln('');
     Writeln('Hra funguje tak ze pohybujeme panackem,mezitim se nam na obrazovce');
     Writeln('nahodne generuji hvezdicky, jakmile se dotkneme hvezdicky hra konci.');
     Writeln('');
     Writeln('Ovladani:      W = nahoru');
     Writeln('               S = dolu');
     Writeln('               A = doleva');
     Writeln('               D = doprava');
     Writeln('');
     Writeln('1.Nova hra');
     Writeln('2.Konec');
     c:=readkey;
                        case c of
                             '1': novahra;
                             '2': konec;
                        end;

end.

Nahlásit jako SPAM
IP: 78.108.157.–
zlz
~ Anonymní uživatel
634 příspěvků
27. 2. 2012   #2
-
0
-

Funkcí KeyPressed můžeš zjistit, jestli byla stištěna nějaká klávesa, tj. jestli ReadKey má co načíst nebo bude čekat na stisk klávesy.

Nahlásit jako SPAM
IP: 213.211.51.–
Mircosoft+1
Věrný člen
28. 2. 2012   #3
-
+1
-
Zajímavé

Ono jde o to, kdy se ta hvězdička má objevovat. Jestli to má být po nějakém časovém intervalu, tak je víc možností. Já bych to napsal asi takhle:

var casovac:longint absolute 0:$046C;

...

repeat
CasNaZacatku:=casovac;
 repeat
 if keypressed then begin
                    klavesa:=readkey;
                    ...zpracuj klavesu a pohni panackem...
                    end;
 until casovac>casnazacatku+18*PozadovanyPocetSekund
       or poloha panacka = poloha hvezdicky;...pregeneruj pozici hvezdicky...
until poloha panacka = poloha hvezdicky;

...

Na té kouzelné adrese 0:$046C je uložen počet 55milisekundových tiků uběhlých od zapnutí počítače. 55 ms znamená cca 18 tiků za sekundu, proto počet sekund mezi přesunem hvězdičky násobím osmnácti.

S Delayem by to šlo taky:

...
PocetCyklu:=0;
 repeat
 if keypressed then begin
                    klavesa:=readkey;
                    ...zpracuj klavesu a pohni panackem...
                    end;
 inc(pocetcyklu);
 if pocetcyklu>NejakaHodnota then begin
                                  ...pregeneruj pozici hvezdicky...
                                  pocetcyklu:=0;
                                  end;
 delay(chvilicka);
 until poloha panacka = poloha hvezdicky;
...

Jenom ta chvilicka čekání musí být kratší než doba mezi automatickým zopakováním stisknuté klávesy, jinak by se stisky v paměti klávesnice hromadily.

Jestli se hvězdička má posouvat po určitém počtu kroků panáčka, bude to o něco jednodušší, protože se nemusíme starat o čas:

...
pocetkroku:=0;
 repeat
 klavesa:=readkey;
 ...zpracuj klavesu a posun panacka...
 inc(pocetkroku);
 if pocetkroku>NejakaHodnota then ...jako predtim, pak pocetkroku:=0...
 until panacek snedl hvezdicku;
...

Ještě poznámka: náhodné číslo z intervalu 1..80 ti dá výraz random(80)+1. Potom už samozřejmě nemusíš rozsah kontrolovat.

Nahlásit jako SPAM
IP: 212.118.224.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
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, 15 hostů

Podobná vlákna

Jednoduchá hra? — založil Balaam

Neco jako urlencode v php — založil dfgsdfsdfsdf

Něco jako PHP bot? — založil Hunty

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ý