abonnement Unibet Coolblue Bitvavo
  dinsdag 20 januari 2009 @ 09:39:58 #1
189216 netolk
maar dan andersom
pi_65235647
hoi ik heb een functie gemaakt en ik vraag me hoe ik het volgende goed kan oplossen, de functie word meerdere keren aangeroepen en nu wil ik dat srand() maar een keer word aangeroepen??
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Enemy CreateEnemy()
{
  Enemy myEnemy;
  srand(unsigned(time(0)));
  int xlowest = 1, xhighest = 78;
  int ylowest = 1, yhighest = 18;
  int xrange = (xhighest - xlowest)+1;
  int yrange = (yhighest - ylowest)+1;
  myEnemy.X = xlowest+int(xrange*rand()/(RAND_MAX + 1.0));
  myEnemy.Y = ylowest+int(yrange*rand()/(RAND_MAX + 1.0));
  int VH = (2*rand()/(RAND_MAX + 1.0));
  switch(VH)
  {
    case 0:
         myEnemy.VTHF = true;
       break;
    case 1:
         myEnemy.VTHF = false;
       break;
  }
  myEnemy.ULTDRF = (2*rand()/(RAND_MAX + 1.0));
  
  return myEnemy;
}


iemand surgesties??

grtz. netolk
Beware of the Raping Zebra's
  dinsdag 20 januari 2009 @ 09:40:29 #2
13783 Anthraxx
When you see the robot, drink!
pi_65235655
In de constructor van je class Enemy kun je srand() aanroepen.
  dinsdag 20 januari 2009 @ 09:46:14 #3
13783 Anthraxx
When you see the robot, drink!
pi_65235787
En verder mis je een default label bij je switch. Wat als iemand of jij per ongelijk RAND_MAX aanpast naar een grotere waarden. Wat moet je code dan doen? En jij bij het debuggen maar rotzoeken waarom een bepaalde waarde niet naar true of false gezet wordt.
  dinsdag 20 januari 2009 @ 09:51:03 #4
13783 Anthraxx
When you see the robot, drink!
pi_65235894
En leg eens wat beter uit waar je mee bezig bent? Schrijf je in pure C code? of in C++? Wat is Enemy? Een struct of een class (waar je uiteindelijk een object van maakt).
Vooralsnog lijkt het mij een C programma, maar in je eerdere topic had je het over C++. Indien je puur C programmeert kun je srand() natuurlijk eenmalig aanroepen in je main() functie zodat de seed eenmalig veranderd. Je kan ook in de functie die CreateEnemy() aanroept steeds srand() aanroepen.
In C++ maak je hier typisch een class van en zet je srand() eenmalig in je constructor.
pi_65236008
quote:
Op dinsdag 20 januari 2009 09:51 schreef Anthraxx het volgende:
Wat is Enemy? Een struct of een class (waar je uiteindelijk een object van maakt).
Ik gok dat het een class is waar een object van gemaakt wordt gezien het feit dat je in games meestal meerdere vijanden hebt
Maar volgens mij moet er dan nog een instance van de class gemaakt worden en dat mis ik volgens mij.
  dinsdag 20 januari 2009 @ 09:59:56 #6
13783 Anthraxx
When you see the robot, drink!
pi_65236088
quote:
Op dinsdag 20 januari 2009 09:56 schreef Pakspul het volgende:

[..]

Ik gok dat het een class is waar een object van gemaakt wordt gezien het feit dat je in games meestal meerdere vijanden hebt
Precies. Je gokt . Het kan van alles zijn. Een object is het meest aannemelijke, maar dan zit hij hier wel heel ranzig te programmeren. Als een Game meerdere vijanden heeft, dan maak je een class Enemy, waarbij alle initialisatie in je constructor gebeurd en uiteindelijk het object zelf de routines bevat om het gedrag te manipuleren. Dit object sla je als referentie op in een vector oid (denk aan de one-to-many relatie in UML. Zo moet je het zien denk ik).en ja, ik geloof heus wel dat je zoiets bedoelt of dit begrijpt . De vraag is of de TS dat ook doet

Maar dan moet hij wel meer informatie geven of beter nadenken over zijn design...
  dinsdag 20 januari 2009 @ 10:01:21 #7
13783 Anthraxx
When you see the robot, drink!
pi_65236132
Het leuke is dat ik in zijn vorige topic verweten werd arrogant te zijn toen ik opmerkte dat een boek een betere keuze voor hem was. Zie hier het resultaat. Pak gewoon een boek en leer het op de goede manier. Dit aanklooien gaat je uiteindelijk tegenwerken.
  dinsdag 20 januari 2009 @ 10:09:31 #8
68576 eleusis
fokked op kidz
pi_65236342
Inderdaad, ik reageer om die reden ook maar zelden op programmeervragen. Aan de cultuur van 'prutsen tot het werkt' help ik niet meer mee.
Ik in een aantal worden omschreven: Ondernemend | Moedig | Stout | Lief | Positief | Intuïtief | Communicatief | Humor | Creatief | Spontaan | Open | Sociaal | Vrolijk | Organisator | Pro-actief | Meedenkend | Levensgenieter | Spiritueel
  dinsdag 20 januari 2009 @ 10:21:10 #9
13783 Anthraxx
When you see the robot, drink!
pi_65236603
Zou ik eigenlijk ook moeten doen. Maar ja, ik heb nog ergens de hoop dat ik van elke prutser een goede programmeur kan maken.
pi_65236848
quote:
Op dinsdag 20 januari 2009 09:59 schreef Anthraxx het volgende:

[..]

Precies. Je gokt . Het kan van alles zijn. Een object is het meest aannemelijke, maar dan zit hij hier wel heel ranzig te programmeren. Als een Game meerdere vijanden heeft, dan maak je een class Enemy, waarbij alle initialisatie in je constructor gebeurd en uiteindelijk het object zelf de routines bevat om het gedrag te manipuleren. Dit object sla je als referentie op in een vector oid (denk aan de one-to-many relatie in UML. Zo moet je het zien denk ik).en ja, ik geloof heus wel dat je zoiets bedoelt of dit begrijpt . De vraag is of de TS dat ook doet

Maar dan moet hij wel meer informatie geven of beter nadenken over zijn design...
En dan nog, patterns zijn er ook niet voor niets. Enemy klinkt als een een normale getter/setter class, simpel als hell. Er zou een ander object moeten zijn die het gedrag dmv de getters en setters manipuleert. Maar goed, ranzig programmeren is ook een stijl....
Op dinsdag 21 februari 2012 22:30 schreef JoanFranka het volgende:
PINGUINS RULEREN!! Dat zijn echt een van de grappigste dieren op aarde hahahaa
  dinsdag 20 januari 2009 @ 10:41:14 #11
74065 Burdie
Cogito ergo Fok!
pi_65237114
Koop een boek.
KuikenGuppy
pi_65237481
quote:
Op dinsdag 20 januari 2009 09:59 schreef Anthraxx het volgende:
Als een Game meerdere vijanden heeft
Ah, als. Aannames, An. Misschien is deze CreateEnemy method wel de eerste stap op weg naar een Factory Method voor een Singleton implementatie .
"If you are depressed you shouldn't be in C major!" - Rick Beato
  dinsdag 20 januari 2009 @ 10:55:00 #13
13783 Anthraxx
When you see the robot, drink!
pi_65237518
quote:
Op dinsdag 20 januari 2009 10:53 schreef Litpho het volgende:

[..]

Ah, als. Aannames, An. Misschien is deze CreateEnemy method wel de eerste stap op weg naar een Factory Method voor een Singleton implementatie .
Ja, aannames zijn dodelijk. Maar hij moet gewoon meer informatie geven. Dat was je toch wel duidelijk?
pi_65237591
quote:
Op dinsdag 20 januari 2009 10:53 schreef Litpho het volgende:

[..]

Ah, als. Aannames, An. Misschien is deze CreateEnemy method wel de eerste stap op weg naar een Factory Method voor een Singleton implementatie .
Dan is zijn naamgeving ook nog kut ook.
Op dinsdag 21 februari 2012 22:30 schreef JoanFranka het volgende:
PINGUINS RULEREN!! Dat zijn echt een van de grappigste dieren op aarde hahahaa
  dinsdag 20 januari 2009 @ 16:54:49 #15
189216 netolk
maar dan andersom
pi_65250764
quote:
Op dinsdag 20 januari 2009 10:21 schreef Anthraxx het volgende:
Zou ik eigenlijk ook moeten doen. Maar ja, ik heb nog ergens de hoop dat ik van elke prutser een goede programmeur kan maken.
Mooi that's the spirit

maar Enemy is een struct en MAX_RAND kan anders zijn op andere systemen en daarom word het door MAX_RAND gedeeld zodat je maar een aantal waarden kan krijgen in het geval van die bool dus maar 2...

maar het werkt dus niet als je srand() in de struct zet... dan zegt ie dat dingen niet kunnen terwijl ik wel de juiste header toevoeg

grtz. netolk
Beware of the Raping Zebra's
  dinsdag 20 januari 2009 @ 16:55:24 #16
189216 netolk
maar dan andersom
pi_65250787
quote:
Op dinsdag 20 januari 2009 10:41 schreef Burdie het volgende:
Koop een boek.
heb ik al
Beware of the Raping Zebra's
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')