login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[C#] Game: SpaceInvaders (Opgelost)

Offline dododedodo - 08/05/2009 16:40 (laatste wijziging 08/05/2009 16:42)
Avatar van dododedodoLid Hoi,

Ik heb een game proberen te maken in C#. Ik heb met behulp van wat tutorials het in elkaar gekregen. Het enige probleem is nu dat de vijandige schepen niet in beeld willen komen. De vijand code zit in cVijand en cForm1.

Groetjes,
Dodo

Link: Klik! (rechts onderin in de tabel)

11 antwoorden

Gesponsorde links
Offline Abbas - 08/05/2009 16:47 (laatste wijziging 08/05/2009 16:48)
Avatar van Abbas Gouden medaille

Crew .NET
Als ik je code zo even bekijk, zet je nergens instanties van cVijand in de List! Er zullen er dus ook geen getoond worden tijdens het spel want de lijst is leeg.

Edit:
Als je trouwens een BreakPoint op regel 25 in cGame.cs zet en dan debugt, zal je zien dat inderdaad de lijst leeg is. 
Offline dododedodo - 08/05/2009 16:54 (laatste wijziging 08/05/2009 16:54)
Avatar van dododedodo Lid Als ik me niet vergis maak ik die toch op regel 14 van cGame.cs?
Offline Abbas - 08/05/2009 16:59
Avatar van Abbas Gouden medaille

Crew .NET
Hm hm, daar maak je enkel een publieke variabele 'Vijanden' aan van het type 'cVijanden'. Dat is niet hetzelfde als de lijst vullen met 'Vijanden' om ze dan op het scherm te tonen. 
Offline dododedodo - 08/05/2009 17:12 (laatste wijziging 08/05/2009 17:12)
Avatar van dododedodo Lid dat gebeurt toch bij MainTimer_tick (onderaan) met berekenVijanden?
Offline Abbas - 08/05/2009 17:25 (laatste wijziging 08/05/2009 17:27)
Avatar van Abbas Gouden medaille

Crew .NET
Als je in cGame.cs regel 89 verandert naar bijvoorbeeld:

  1. if (rnd.Next(100) > 0)

Test dan nog maar eens, je scherm staat plots vol met vijanden! Je gaat alleen nooit dood, zelfs als ze je raken. Je zal dus een andere conditie moeten zoeken om de vijanden te tonen dan alleen wanneer die Random gelijk is aan 50! 

Edit:
Je code werkt wel hoor, zelfs al zet je de conditie op 'gelijk aan 50'. Er komen er dan enkel heel weinig! 
Offline dododedodo - 08/05/2009 20:20
Avatar van dododedodo Lid Ok, dat werkt.. Heb hem nu > 45 en < 55... Maar nu valt me iets op, die vijanden komen allemaal in hetzelfde patroon, herhaald... Hoe kan ik dat dan oplossen :S
Offline Abbas - 08/05/2009 20:40
Avatar van Abbas Gouden medaille

Crew .NET
Zorgen dat je een random positie aanmaakt van waar ze moeten komen. Ik ben het spel ook aan het maken maar dan op mijn manier. 
Offline dododedodo - 08/05/2009 20:41 (laatste wijziging 08/05/2009 20:42)
Avatar van dododedodo Lid De X wordt toch random bepaald?
  1. void BerekenVijanden()
  2. {
  3. Random rnd = new Random(DateTime.Now.Millisecond);
  4. int randed = rnd.Next(100);
  5. int xRanded = rnd.Next(DrawPic.Width - 50); //<------
  6. if (randed > 45 && randed < 55)
  7. {
  8. Vijanden.NewVijand(xRanded, -200); //<-----------
  9. }
  10.  
  11. foreach (cVijand Vijand in Vijanden.Vijand)
  12. {
  13. if (Vijand.Showing)
  14. {
  15. Vijand.Y += 3;
  16. if (Vijand.Y > Ship.Y + Ship.Image.Height)
  17. {
  18. Vijand.Showing = false;
  19. }
  20. }
  21. }
  22. }
Offline Abbas - 10/05/2009 03:04
Avatar van Abbas Gouden medaille

Crew .NET
Zet je Random-declaratie eens buiten de klasse. Je zal zien dat dit een heel verschil maakt. Zoiets dus:

  1. static Random rnd = new Random();
  2.  
  3. public class BLAAT()
  4. {
  5. int i = rnd.Next(100);
  6. //...
  7. }
Offline dododedodo - 10/05/2009 19:35 (laatste wijziging 10/05/2009 19:35)
Avatar van dododedodo Lid Hoe kan ik eigenlijk detecteren welke key wordt ingedrukt? Ik wil namelijk ervoor zorgen dat als p of P indrukt dat hij dan op pauze gaat. Dat is geen probleem (timer enabled op false zetten) maar hoe weet ik welke key het is? Ik heb deze code:

  1. void MainPic_KeyDown(object sender, KeyEventArgs e)
  2. {
  3. if(e.KeyValue == ??? || e.KeyValue == ???) { // <----
  4. Game.SwitchPause();
  5. }
  6. }
Offline Ontani - 11/05/2009 08:09
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
e.KeyValue == Keys.P
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.181s