Ga naar inhoud

[turbo-pascal] Game-Engine


anoniem

Aanbevolen berichten

Hey (alweer :roll: ) Ik probeer een kleine game te maken maar het lukt niet helemaal. Een lijnte (of blokje of wat dan ook) laten bewegen, dat lukt wel, maar ik kom er maar niet achter hoe ik zorg dat je bij een bepaald punt niet verder kan. [code:1:15c7742bbe] PROGRAM move_line_101; {programmanaam} USES GRAPH, CRT; {geef aan welke 'libraries' moeten worden gebruikt} VAR {declareer de benodigde variablen} drv,config : integer; {voor InitGraph} X1, Y1, X2, Y2: longint; {om de coördinaten te bepalen} ch : char; {voor ReadKey} PROCEDURE IncDec; {de procedure voor het bepalen/wijzigen van de X en Y coordinaten} BEGIN IF (X1 > 639) OR (X2 > 639) THEN BEGIN X1 := 1; X2 := 20; END; IF (X1 < 1) OR (X2 < 0) THEN BEGIN X1 := 619; X2 := 639; END; IF (Y1 > 479) OR (Y2 > 479) THEN BEGIN Y1 := 1; Y2 := 1; END; IF (Y1 < 1) OR (Y2 < 1) THEN BEGIN Y1 := 479; Y2 := 479; END; IF ch = #75 THEN BEGIN Dec(X1,10); Dec(X2,10); END; IF ch = #72 THEN BEGIN Dec(Y1,5); Dec(Y2,5); END; IF ch = #77 THEN BEGIN Inc(X1,10); Inc(X2,10); END; IF ch = #80 THEN BEGIN Inc(Y1,5); Inc(Y2,5); END; END; PROCEDURE MoveLine; {Procedure voor het weergeven van de lijn} BEGIN Line(X1,Y1,X2,Y2); END; PROCEDURE Message; {spreekt voor zich lijkt me} BEGIN SetRGBPalette(5,57,32,22); SetColor(5); OutTextXY(140,406,'Use The Arrow Keys To Move The Line...'); END; BEGIN {het daadwerkelijke programma} drv := VGA; config := VGAhi; initgraph(drv,config,''); {naar de grapische mode gaan} X1 := 100; {X en Y coordinaten waardes geven} X2 := 120; Y1 := 100; Y2 := 100; line(X1,Y1,X2,Y2); {geef lijn weer} message; {spreekt voor zich} REPEAT {herhaal het volgende....} ch := readkey; {wacht tot een toest word in gedrukt} SetFillStyle(solidfill,0); bar(x1,y1,x2,y2); {verwijder de vorige lijn} SetFillStyle(hatchfill,1); bar(180,120,360,240); {maak een blok} message; {geef bericht weer} SetColor(15); IncDec; {wijzig de X en Y coordinaten aan de hand van de ingedrukte toets} MoveLine; {verplaats de lijn} UNTIL (ch = #68) OR (ch = #27); {...tot dat F10 of Esc wordt ingedrukt} END. {dan afsluiten} [/code:1:15c7742bbe] Hoe zorg ik nou dat de lijn niet 'door' het blok heen kan? (heb ff een lijntje genomen omdat dit het minste code kost)
Link naar reactie
[quote:b59fa61c27="turbo-pascal"][quote:b59fa61c27="Johan Stokking"]Kan je ff dat programma compilen, dan kunnen we even zien hoe het precies gaat. Ik heb nu geen Turbo Pascal bij de hand.[/quote:b59fa61c27] Als ji het voor me host wel, mijn host laat geen zip's toe . :cry:[/quote:b59fa61c27] Mail maar naar reg@johan.stokking.nl (mijn spam adres ;) ), ik ben wel benieuwd.
Link naar reactie
  • 2 weken later...
[quote:97f6b9054d="turbo-pascal"]Johan Stokking, ik heb hem net ff naar je gemailed. En Thanx WimB maar zover ben ik nog niet. (snap de code wel, maar wil eerst mijn eigen beginsel :D )[/quote:97f6b9054d] Ik heb hem ja. Hij werkt hier volgens mij, maar gaat er af en toe weer uit (minimalizeert naar taakbalk), ligt volgens mij aan de resolutie (1280 x 1024) of videokaart. Maarre het werkt wel ja, dat streepje kan ik iig bewegen :)
Link naar reactie
// turbo-pascal Aangezien dit DOS-code lijkt te zijn ... zou je toch gewoon de kleur van de pixel kunnen opvragen ? Volgens mij is er namelijk zoiets als 'getpixel' (desnoods lees je rechtstreeks uit het video-geheugen ... als je een standaard vga-resolutie hebt gekozen :)) Als dat niet mogelijk is dan kun je gewoon de achtergrond als bitmap in het geheugen houden en daar in kijken. Dus : - bereken de nieuwe locatie - kijk of de uiteinde van het lijntje op een geldige locatie terechtkomen - als het geen goede locatie is roep je een of andere 'fout'-routine aan en wijzig je de coordinaten van je lijntje niet ... Andere mogelijkheid : - leg de locatie & grootte van de 'vijandige' objecten vast - voor iedere beweging kijk je of je op een van die objecten uit je lijst bent terechtgekomen ... btw : Ik zou je aanraden om in ieder geval een aantal record-structuren te gebruiken. Al die losse X & Y variabelen gaan problemen opleveren ...
Link naar reactie
  • 2 weken later...

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...