Oud 26-10-2016, 10:10
Maylena
Avatar van Maylena
Maylena is offline
Ik weet niet of dit hier goed staat, maar ik begin net een maand met programmeren in C# (Visual Studio 2015) en ik moet een racegame maken.

Hoe kan ik ervoor zorgen dat een object, in dit geval een autootje, een maximum snelheid heeft? Nu hebben we (van een voorbeeld die we mogen gebruiken):

if (e.KeyCode == Keys.Up)
{
speed = speed + 2f;

if (speed >= 10.0)
{
speed = 10.0f;
}
}
if (e.KeyCode != Keys.Up)
{
speed -= 1;
}
if (e.KeyCode == Keys.Down)
{
speed -= 2;
}

Maar als hij snelheid 10 bereikt, blijft hij dus continu 10 rijden (trouwens ook met langzamere snelheden, dan blijft hij ook doorrijden).

Hebben jullie ideeën om dit te fixen?
De dingen die we op internet tegenkomen, zijn erg ingewikkeld, omdat we nog maar net begonnen zijn.

Bedankt!
__________________
Doei!
Met citaat reageren
Advertentie
Oud 26-10-2016, 12:56
Verwijderd
Waar is mijn antwoord gebleven?
Met citaat reageren
Oud 26-10-2016, 13:06
Verwijderd
Nou jah, poging 2 dan maar:

De reden waarom het fout gaat is omdat je ergens bovenaan hebt:
Code:
if (speed >= 10.0)
{
speed = 10.0f;
}
Wat je moet doen is een andere volgorde hanteren, en tevens je variabelen wat handiger benoemen en er meer van moet gebruiken (of constanten maar de maximumsnelheid kan variabel zijn) en je moet explicieter zijn in wat je wil volgens mij staat hierboven alleen keys.up gedefinieerd en daarna alle andere dingen. In een ietwat vreemde volgorde.

En leer ook de [code] tags gebruiken voor duidelijkheid, dat vind je op heel veel verschillende platformen terug, sommige websites hebben zelfs syntax highlighting.

Ik ga er even vanuit dat de snelheid een integer is:

Code:
int intVarMaxSpeed = 10
int intVarSpeed = 0
int intVarSpeedStep = 1

if Keys.Up
{
  if (intVarSpeed + intVarSpeedStep => intVarMaxSpeed)
  {
    intVarSpeed = intVarMaxSpeed;
  }
  else
  {
    intVarSpeed = intVarSpeed + intVarSpeedStep;
  }
}
if Keys.Down
{
  if (intVarSpeed + intVarSpeed <= 0) //minimumsnelheid mag niet onder 0 uitkomen
  {
    intVarSpeed = 0;
  }
  else
  {
    intVarSpeed = intVarSpeed - intVarSpeedStep;
  }
}
Is dat duidelijk zo?

Laatst gewijzigd op 26-10-2016 om 13:11.
Met citaat reageren
Oud 26-10-2016, 13:08
Verwijderd
Disclaimer: De laatste keer dat ik C# heb gebruikt was toen de taal versie 1 nog lang niet bereikt had in 2000/2001...
Met citaat reageren
Oud 26-10-2016, 13:33
bierkoning
Avatar van bierkoning
bierkoning is offline
Citaat:
Waar is mijn antwoord gebleven?
Die is dan niet doorgekomen. Ik zie niets hier verder. En heb ook niets verwijderd
__________________
Als een vrouw een andere vrouw een compliment maakt, dan heeft ze wat van die andere vrouw nodig of is ze dronken.
Met citaat reageren
Oud 26-10-2016, 13:35
Verwijderd
Citaat:
Die is dan niet doorgekomen. Ik zie niets hier verder. En heb ook niets verwijderd
Er stond geen onvertogen woord in dus ik ging er ook niet vanuit dat een van de mods het had gedaan. Kreeg net een 503 error op DK maar de post was wel gemaakt. Misschien heb ik iets te enthousiast CTRL-W gedrukt bij een ander tabblad.
Met citaat reageren
Oud 15-06-2017, 21:35
@noniem
@noniem is offline
Ik weet niet of je er nog wat aan hebt maar goed. De reden dat hij op 10 blijft is omdat je zegt speed >= 10, oftewel speed is hoger dan of gelijk aan 10 en dan maak je hem 10... als je dus speed > 10 doet zou het weg moeten zijn.
Met citaat reageren
Oud 15-06-2018, 11:47
BerendBokkepoot
BerendBokkepoot is offline
Ik persoonlijk raad aan om een switch case te gebruiken in deze situatie,

switch (boolval) {
case true:
/* code */
break;
case false;
/* code */
break;
}


dit om het alom bekende bethesda probleem te vermijden.
ik hoop dat je het nu wel lukt,

xxx

Patrice
Met citaat reageren
Advertentie
Reageren

Topictools Zoek in deze topic
Zoek in deze topic:

Geavanceerd zoeken

Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Games de beste games die ooit gemaakt zijn
Verwijderd
287 28-05-2008 16:35
Games Nintendo @ E3
m3tr01dm1nd3d
142 22-05-2006 20:02
Seksualiteit [Enquete] SOA
Megadeth
59 13-02-2006 04:32


Alle tijden zijn GMT +1. Het is nu 19:17.