anoniem Geplaatst: 17 oktober 2003 Delen Geplaatst: 17 oktober 2003 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) Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 Zoek maar eens met Google op '2d collision detection' : [url=http://www.google.nl/search?q=2d+collision+detection&ie=UTF-8&oe=UTF-8&hl=nl&btnG=Google+zoeken&lr=] Google search op 2d collision detection[/url] Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 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 Link naar reactie
anoniem Geplaatst: 21 oktober 2003 Auteur Delen Geplaatst: 21 oktober 2003 [quote:0ccdb0398c="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:0ccdb0398c] Als ji het voor me host wel, mijn host laat geen zip's toe . :cry: Quote Link naar reactie
anoniem Geplaatst: 21 oktober 2003 Auteur Delen Geplaatst: 21 oktober 2003 [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. Quote Link naar reactie
anoniem Geplaatst: 22 oktober 2003 Auteur Delen Geplaatst: 22 oktober 2003 Ik kwam net nog een link tegen van een spel in Turbo Pascal: [url=http://home.planet.nl/~mikewiering/mario/source.html]Mario[/url] wimb Quote Link naar reactie
anoniem Geplaatst: 4 november 2003 Auteur Delen Geplaatst: 4 november 2003 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 Link naar reactie
anoniem Geplaatst: 4 november 2003 Auteur Delen Geplaatst: 4 november 2003 [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 :) Quote Link naar reactie
anoniem Geplaatst: 5 november 2003 Auteur Delen Geplaatst: 5 november 2003 // 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 ... Quote Link naar reactie
anoniem Geplaatst: 15 november 2003 Auteur Delen Geplaatst: 15 november 2003 Oke ik ga er nu mee bezig, dan laat ik wel weer van me horen. btw dat minimaliseren komt oa als iemand iets bij msn zegt, dat heb ik ook :wink: Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen