Avatar billede stefmeister Nybegynder
23. juli 2003 - 14:54 Der 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?


Hygge...!
Avatar billede stefmeister Nybegynder
23. juli 2003 - 14:57 #1
TILFØJELSE.... kan man gøre sådan at hvis der er et udsagn der er sandt så trykker den på en bestemt knap?
Avatar billede jpvj Nybegynder
23. juli 2003 - 14:59 #2
Det du gør er følgende:

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...
Avatar billede athlon-pascal Juniormester
23. juli 2003 - 14:59 #3
Kan du ikke bare tjekke om der er 4 på stribe hver gang der bliver puttet en polette ned i rammen?
Det vil nok være meget bedre.
Avatar billede jpvj Nybegynder
23. juli 2003 - 15:22 #4
athlon-pascal> Jo ... det er nok den pæneste løsning
Avatar billede cautoo Nybegynder
23. juli 2003 - 22:35 #5
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);
Avatar billede stefmeister Nybegynder
24. juli 2003 - 00:44 #6
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 <--!
Avatar billede elskermad.dk Nybegynder
24. juli 2003 - 00:47 #7
hvor kan man lærer delphi henne?
Avatar billede stefmeister Nybegynder
24. juli 2003 - 01:12 #8
Her er en god begyndelse...

http://www.udvikleren.dk/article.php?techid=2&aid=119

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å!
Avatar billede dl Nybegynder
25. juli 2003 - 17:38 #9
Kan du ikke bare lavet nået i denne stil...

--- kode start ---

Program bla

VAR
  BrugerPoint: Integer;
  Point: Boolean;

....
Prucedure Form.create(sender  blabla );
Begin
  Point := False;
End;

// Hvis nu brugen har 4 på stribe så sæt Point := True:

Procedure Timer ....
Begin
  IF Point = True THEN
  BEGIN
    BrugerPoint :=  BrugerPoint + 1;
    Point := False;
  END;
End;

--- kode slut ---



\\ dl
Avatar billede stefmeister Nybegynder
25. juli 2003 - 22:48 #10
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!
Avatar billede dl Nybegynder
26. juli 2003 - 00:22 #11
Okay... men har du løst dit problem.
Hvis du har det, kan du ikke lukke denne sektion.

//dl
Avatar billede stefmeister Nybegynder
26. juli 2003 - 00:34 #12
jeg har løst mit problem...!

Lukke? hvordan?
Avatar billede dl Nybegynder
26. juli 2003 - 00:39 #13
Hvis du ikke kan bruge nogle af de svar der er.
Så skriver du selv "at du har løst programmet" Mærker det "SVAR" ude til venstre.
Tryk udfør.

Derefter ruller du ned i bund af denne side, finder dig selv i listen og trykker på knappen.
Avatar billede stefmeister Nybegynder
26. juli 2003 - 02:37 #14
ok... meget smart...!

Har fået svar!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester