23. juli 2003 - 14:54Der er
13 kommentarer og 1 løsning
Timer i delphi
Hej... jeg er ved at lave (næsten færdig) et fire på stribe spil. Det virker ligesom de der gammeldags hvor man har nogle små poletter man putter ned i en ramme, og så falder den så langt ned den kan...
Jeg har lavet en version hvor den første der får fire på stribe vinder, og er igang med at lave en version hvor man kan se hvor mange gange man havde fire på stribe i løbet af hele spillet.
NU TIL SPØRGSMÅLET...!
For at få den til at vide hvornår man har fire på stribe, har jeg sat en Timer til at finde ud af om der er fire på stribe hvert 1/100 del sek. , men når jeg så laver den sådan at der bliver givet et point til den der har fire på stribe, men så får han et point hvert 1/100 dele sek. og det er jo ikke meningen at han skal have så mange point. Hvordan laver jeg mit program sådan at han kun får et point?
1) I din Timer event standser du din timer som det første. Herefter checker du om der skal gives points eller ej (dvs. om spillet er slut). Hvis der ikke skal gives points startes timeren igen - ellers lader man den blot være disablet.
2) Du kan jo bare kalde den tilknyttede procedure med de korrekte parametre...
hmm... Ja lyder som en god ide med kun at tjekke 4 på stribe når brikken rammer nærmeste bund
Af hensyn til at den ikke skal tjekke tjekke samme fire på stribe flere gange er svært at svare på hvordan du laver uden "tjek-omfire-på-stribe" proceduren, men umiddelbart ville jeg foreslå for hver spiller at du havde et array som kunne indeholde input som startpositionen på brættet, eks. : række: 2, kolonne: 3, og så om der derfra er en fire på stribe lodret, vandre, dalene fra venstre mod højre eller stigende fra venstre mod højre, som du så kunne adde til hver gang der var 4 på stribe, og så inden du gav point for en fire på stribe så tjekke om den ikke allerede er i listen...
Trykke på en bestem knap?, igen lidt upræcist synes jeg... der er knapper på din hardware, i dit delphi-projekt og i andre knapper. Hvis du skal trykke på en keyboardknap, så søg efter Keyboard hook Hvis det skal være i et andet program end dit eget, så kig på API kald Hvis du vil trykke på en knap med et dynamisk navn i din form kan du gøre således: Tbutton(findcomponent('NAVN')).OnClick(sender);
Jeg er ikke ekspert i Delphi (rettere sagt jeg er rimelig ny) så det med et array er jeg ikke helt med på...
Som sagt, så kan jeg godt lave spillet sådan at den stopper timeren, men når den så begynder igen, så "finder" den jo den samme fire på stribe en gang til.
Jeg kan godt lave det sådan at den tjekker når der kommer en ny polet i, men når det så er den sidste polet der er, så kan den ikke tjekke om der evt er kommet fire på stribe efter den sidste polet er kommet i! Men jeg tror jeg har fundet en løsning, at lave nogle variable boolean for hver spiller, og når der så er fire på stribe, så sætte den til true, og det gør jo ikke noget at den så bliver sat til true flere gange for det ændre ikke noget, så har jeg smidt en procedure ind der reagere på de forskellige så den kan finde ud af at tælle op!
TAK FOR ALLE SVARENE, men jeg synes ikke rigtig der var noget af det jeg kunne bruge...! Måske lige den sidste del fra --> Cautoo <--!
det lære man lige de mest banale ting... så man i hvert fald kan lave små sjove applicationer. Jeg har ikke læst nogen steder hvordan, jeg har bare downloadet en masse forskellige delphi programmer (ikke for komplicerede) + sourcen, og så har jeg siddet og studeret dem lidt, på den måde kan man også lære det på!
jo, sådan har jeg også gjort, men jeg skulle have den til at tælle point op, så at spillet ikke slutter når der er en der har fire på stribe! Jeg har gjort noget lignende men der er nogle småfejl så det ikke virker Helt, men det gør ikke så meget!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.