[C++]Objecten op elkaar laten reageren

Pagina: 1
Acties:

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
Ik ben bezig met een projectje voor mezelf om een beetje thuis te voelen in OpenGL programeren in C++.

Het projectje beeld nu een snelweg af (textured en al) met de juiste belichting en 2 voertuigen.
De 2 voertuigen heb ik staan in een Displaylist zodat ik makkelijk een snelweg vol met ze kan toveren.

Het moet een kleine simulatie worden waarbij de d.m.v de signalering boven de snelweg de snelheid aan kan geven, en dat de meeste voertuigen zich er ook aan houden natuurlijk. maar omdat ik nu bijv al een truck en een auto heb zal de truck max 80 rijden ... en de auto max 120, het zal dus wel eens voorkomen dat een auto die op de rechter rijbaan rijdt de truck voorbij moet, want nu rijd deze en gewoon dwars doorheen, de postitie van de auto kan ik manipuleren met :

glTranslatef(carl,-1.0f,carf);

waarin ik dus 2 variabelen heb verwerkt nl :

carl : voor de beweging op de X as ... hiermee kan ik dus van rijbaan wisselen.
carf : voor de beweging op de Z as... hiermee regel ik dus de snelheid van het auto'tje

Omdat dit me eerste openGL projectje is wil ik het, relatief, simpel houden. en daarom niet een complete "ai" te gaan schrijven die ik bij elke auto weer kan gebruiken.

Nu ben ik zover dat ik de carf waarde van de truck vergelijk met carf waarde van de auto zodra deze gelijk zijn increase ik de carl variabele en beweegt de auto dus naar de linker rijbaan. in de praktijk werk dit nog niet lekker omdat hij eerst half door de truck rijdt en daarna pas naar links gaat maar das van latere zorg.
Als ik op start druk voert hij dus het volgende stukje code uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (start2)
        {
        glLoadIdentity();
        carf-=0.001f;
        glTranslatef(carl,-1.0f,carf);
        glBindTexture(GL_TEXTURE_2D, texture[2]);
        glCallList(car);
        glLoadIdentity();
        carf2-=0.001f;
        glTranslatef(carl2,-1.0f,carf2);
        glBindTexture(GL_TEXTURE_2D, texture[3]);
        glCallList(truck);
        }

Het probleem :

Als de auto eenmaal op de linker rijbaan zit mag hij de truck voorbij, maar ik wil niet dat alle auto's op de linker-baan blijven en alle truck's rechts. Ik wil dat het weer gelijk verdeeld word zodra er rechts weer ruimte is. Ik loop hier nou al ruim een weekend over te piekeren hoe ik dit het beste kan coden (hoe ik dus kan zorgen dat bijde rijbanen ong even vol zijn) maar ik kom er niet uit. Ik hoop dat jullie me hier enigzins bij kunnen helpen.

Ik hoop dat ik hier duidelijk genoeg ben geweest, heb je nog vragen of is er nog iets onduidelijk post het gewoon even.

LETOP : dit is geen code request, enigste wat ik vraag is dat jullie even willen brainstormen hoe dit op te lossen.

... MMORPG Addict.


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Ik heb dit in lang vervlogen tijden ook eens geproggeld in c++ met bgi-graphics. De manier die ik nu vertel zal wel heel wat verouderd zijn, maar het was het volgende:

Ieder object 'Auto' had sensoren. Die sensoren tastten als het ware de baan voor zich, naast zich, en achter zich af. De sensoren waren gewoon pixels, en daarvan controleerde ik toen steeds de kleur enzo. Wanneer de kleur zwart was, wilde dat zeggen dat de baan 'vrij' was en kon de auto terug inschuiven naar rechts.

Uw probleem zal ongetwijfeld met OpenGL en de nieuwste technieken enzo veel efficiënter moeten opgelost kunnen worden dan mijn oplossing beschrijft. :)
enigste wat ik vraag is dat jullie even willen brainstormen hoe dit op te lossen.
Heb jij al gebrainstormed ? zoja, aan welke oplossing had je reeds gedacht ;)

[ Voor 15% gewijzigd door Feyd-Rautha op 18-06-2003 15:22 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
1) je bent al erg slecht C++ aan het leren: car2? start2?
2) dit heeft NIETS te maken met OpenGL maar ALLES met een simulatietje te schrijven die je uiteindelijk moet visualiseren MET OpenGL.
3) AI (alla boids) is hier erg aan te raden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Car.update()
{
    if (I_Hit_Something_In_Front_In_Next_Timeslot)
    {
       if (I_am_right)
       {
           if (nobody_left())
           {
                go_left();
           }
           else
           {
               slow_down();
            }
        }
        else
        {
           slowdown_to_match_previous();
        }
   }
}

etc etc...

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
hobbit_be schreef op 18 juni 2003 @ 15:23:
1) je bent al erg slecht C++ aan het leren: car2? start2?
2) dit heeft NIETS te maken met OpenGL maar ALLES met een simulatietje te schrijven die je uiteindelijk moet visualiseren MET OpenGL.
3) AI (alla boids) is hier erg aan te raden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Car.update()
{
    if (I_Hit_Something_In_Front_In_Next_Timeslot)
    {
       if (I_am_right)
       {
           if (nobody_left())
           {
                go_left();
           }
           else
           {
               slow_down();
            }
        }
        else
        {
           slowdown_to_match_previous();
        }
   }
}

etc etc...
1.) is dat zo erg dan, mezelf er nooit van bewust geweest :+ (of bedoel je dat ik beter een array daar kan gebruiken ?)
2.) Jah daar heb je gelijk in, vandaar dat ik ook geen OpenGL noem in me topic.
3.) bedankt voor je voorbeeldje :)
Feyd-Rautha schreef op 18 June 2003 @ 15:21:

Heb jij al gebrainstormed ? zoja, aan welke oplossing had je reeds gedacht ;)
ik dacht inderdaad ook aan sensoren in de vorm van variabelen, maar dan niet op kleur maar als boolean variabele, die d.m.v een functie een true waarde terug gaf als de rechter rijbaan vrij was.

[ Voor 21% gewijzigd door CRiMiNaL op 18-06-2003 15:36 ]

... MMORPG Addict.


Verwijderd

Een paar dingen die je aan kunt nemen om je werk gemakkelijker te maken:
- een auto reageert alleen op de gebeurtenissen voor hem en naast hem; wat er achter gebeurt is niet interessant, aangezien eventuele auto's daar zich aanpassen aan wat er voor ze gebeurt.
- Je wilt de auto's verdelen over beide banen. Waarom houdt je niet gewoon de nederlandse verkeersregels aan, waarin staat dat een auto rechts moet rijden als dat kan, en naar links mag om in te halen, maar daarna zo snel mogelijk weer naar rechts moet.
- als je ruimte tussen de auto's wilt houden, moet je een virtuele auto om de auto's heen bouwen, die groter is dan wat je laat zien

[ Voor 3% gewijzigd door Verwijderd op 18-06-2003 15:33 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoals Feyd-Rautha al min of meer aangaf moet je elke auto gewoon laten detecteren of er een voertuig voor het huidige rijdt, tot op een bepaalde afstand. Is dat het geval, dan moet ie een baan naar links.

Natuurlijk wel uitkijken dat er op dat moment niets links van de auto rijdt. Als dat het geval is zal ie z'n snelheid moeten afnemen, tot ie even hard rijdt als de truck. Zodra de linkerbaan vrij komt kan ie afslaan en z'n snelheid toenemen

Wat je dus nodig hebt is een functie dat een voertuig retourneert binnen een opgegeven gebied, of eentje die de afstand retourneert van het huidige voertuig en diegene ervoor.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
CRiMiNaL schreef op 18 June 2003 @ 15:28:
1.) is dat zo erg dan, mezelf er nooit van bewust geweest :+ (of bedoel je dat ik beter een array daar kan gebruiken ?)
kijk naar STL en bijvoorbeeld std::list / vector. Ik neem aan dat je uiteindelijk liefst honderden autootjes wil gebruiken :) dus met een dynamisch array (en je code die daar gebruik van maakt) is dit heel eenvoudig. Eventueel als STL ineens te veel word toch in ieder geval een array gebruiken.

Word vast leuk om naar te kijken dus posten als je wat hebt!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
hobbit_be schreef op 18 juni 2003 @ 15:48:
[...]


Eventueel als STL ineens te veel word toch in ieder geval een array gebruiken.

Word vast leuk om naar te kijken dus posten als je wat hebt!
Je moet je ook eens in de Nederlandse taal verdiepen in plaats van enkel in de C++-taal :+

Dit eventjes terzijde :)

[ Voor 5% gewijzigd door Feyd-Rautha op 18-06-2003 15:52 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

"drm: .oisyn wint
Het einde der PHP is nabij!!!
Orbb is hier! Eerste PHP vs. Orbb benchmarks released! "

oisyn -> Wat is Orbb?

en

CRiMiNaL -> Waarom heet jij CRiMiNaL?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je werkt trouwens ook niet met objecten, of wel? Lees eens een paar goede tutorials, documenten of boeken over objectgeorienteerd programmeren. Zeker met de STL suggestie van hobbit_be is het belangrijk dat je alle attributen van je auto's bij elkaar encapsuleert in een enkele klasse, die je dan weer in een collectie op kunt slaan
Feyd-Rautha schreef op 18 June 2003 @ 15:51:
Je moet je ook eens in de Nederlandse taal verdiepen in plaats van enkel in de C++-taal :+

Dit eventjes terzijde :)
hobbit_be is volgens mij half engels, dus neem het hem niet kwalijk :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Klik de link, het is een scripttaal
Verder zijn offtopic reacties als deze niet echt gewenst in de techfora... post die dan ook niet. Wat doet het er toe wat Orbb is, of waarom CRiMiNaL CRiMiNaL heet? Heeft niets met het oorspronkelijke probleem te maken

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

ik heb hier een boek "En dan is er java" En die man die het geschreven heeft heeft ook een C++ boek (Aan de slag met C++) geschreven en dat boek lijkt me echt supergoed, dit java boek is het in ieder geval wel, je leert er echt alles uit!

Verwijderd

ok ja ik ben hier nieuw, ik ken de regels nog niet, maar zijn me nu wel duidelijk

modbreak: hou dan op met offtopic posten aub ;)

[ Voor 35% gewijzigd door curry684 op 18-06-2003 16:17 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Verwijderd schreef op 18 June 2003 @ 16:09:
ok ja ik ben hier nieuw, ik ken de regels nog niet, maar zijn me nu wel duidelijk
Hoi. Welkom dan.

Als je nieuw bent hier, lees dan alleszins eens de FAQ's. Dan zal je zien dat je een post van jezelf ook kunt aanpassen ipv meerdere posts onder elkaar te doen.

Gelieve dit topic ook ontopic te houden.

https://fgheysels.github.io/


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
bedankt voor alle tips iig ... :+ ik ben alweer druk aan het proggen, en ik zal inderdaad is wat tutorials opzoeken over object ge-orienteerd programeren, hebben jullie daar mischien nog aanraders voor .... ??? :P

BTW : ik heet CRiMiNaL omdat nog geen enkele "gek" op GoT die naam had genomen ;)

[ Voor 3% gewijzigd door CRiMiNaL op 18-06-2003 16:31 ]

... MMORPG Addict.


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
CRiMiNaL schreef op 18 June 2003 @ 16:30:
bedankt voor alle tips iig ... :+ ik ben alweer druk aan het proggen, en ik zal inderdaad is wat tutorials opzoeken over object ge-orienteerd programeren, hebben jullie daar mischien nog aanraders voor .... ??? :P
Niet in de vorm van een tutorial, maar wel in de vorm van een boek:

Object Oriented Programming in C++
Auteur: LaFore
Uitgeverij: Waite Group Press (dacht ik...)

Is een goed boek voor OO in C++. De basisdingen van C++ worden uit de doeken gedaan, en verder worden alle basis-OO-features in C++ besproken. (Classes, inheritance, virtual functions, ....)

https://fgheysels.github.io/


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
offtopic:
[quote]Feyd-Rautha schreef op 18 June 2003 @ 15:51:
Je moet je ook eens in de Nederlandse taal verdiepen in plaats van enkel in de C++-taal :+
Dit eventjes terzijde :)[/quote]

Moet het dan "wordt" zijn? DT foudten zijn mijn 'kenmerk' dus als je ooit iets van mijn posts zoekt zoeken op ik wordt :) (of is dat nu weer juist). Bah Nederlands! (mag ik in het volg in't engels reply-en?)

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024
hobbit_be schreef op 18 June 2003 @ 17:05:
offtopic:
[quote]Feyd-Rautha schreef op 18 June 2003 @ 15:51:
Je moet je ook eens in de Nederlandse taal verdiepen in plaats van enkel in de C++-taal :+
Dit eventjes terzijde :)[/quote]

Moet het dan "wordt" zijn? DT foudten zijn mijn 'kenmerk' dus als je ooit iets van mijn posts zoekt zoeken op ik wordt :) (of is dat nu weer juist). Bah Nederlands! (mag ik in het volg in't engels reply-en?)
ga je gang :+

... MMORPG Addict.


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
hobbit_be schreef op 18 juni 2003 @ 17:05:
offtopic:
[quote]Feyd-Rautha schreef op 18 June 2003 @ 15:51:
Je moet je ook eens in de Nederlandse taal verdiepen in plaats van enkel in de C++-taal :+
Dit eventjes terzijde :)[/quote]

Moet het dan "wordt" zijn? DT foudten zijn mijn 'kenmerk' dus als je ooit iets van mijn posts zoekt zoeken op ik wordt :) (of is dat nu weer juist). Bah Nederlands! (mag ik in het volg in't engels reply-en?)
offtopic:
eerste persoon is zonder t
3de persoon is + t.

En neen, er mag niet in het engels gereplied worden.

maar laten we maar weer verder ontopic gaan.

[ Voor 10% gewijzigd door whoami op 18-06-2003 18:24 ]

https://fgheysels.github.io/

Pagina: 1