Avatar billede doomstone-dk- Nybegynder
07. april 2008 - 23:20 Der er 6 kommentarer og
1 løsning

Game Of Life, needer lidt hjælp til Drawing

Jeg fik en opgave i skolen, at jeg skulle lave et "spil" kaldt Game of Life, det skulle være en simulation af bakterier ud fra 3 regler.

Har bakterien mere end 4 naboer dør den af overbefolkning
Har den 1 eller ingen dør den af ensomhed.
har en tom cell 3 naober som indeholde bakterier bliver der lavet en bakterie.

Jeg har seleve game koden nede, men jeg vil gerne vise det med noget drawing.

sådan her gør jeg pt. og jeg tror det virker fint, men spillet crasher med det samme, og kan ikke lige finde ud af hvorfor.


this.Text = "Game Of Life. Generation: " + this.Game._Generations;

                Graphics dc = e.Graphics;
                SolidBrush Populated = new SolidBrush(Color.Yellow);
                SolidBrush Unpopulated = new SolidBrush(Color.Black);
               
                int[,] GameArray = this.Game.Game;
               
                // Calculating box size
                int width = this.Width / GameArray.GetLength(1);
                int height = this.Height / GameArray.GetLength(0);
                int x = 0;
                int y = 0;

                for (int Row = 0; Row < GameArray.GetLength(0); Row++)
                {
                    // Each Row here
                    for (int Cell = 0; Cell < GameArray.GetLength(1); Cell++)
                    {
                        if (GameArray[Row, Cell] == 1)
                        {
                            dc.FillRectangle(Populated, x, y, width, height);
                        }
                        else
                        {
                            dc.FillRectangle(Unpopulated, x, y, width, height);
                        }
                        x = x + width;
                    }
                    y = y + height;
                    x = 0;
                }

Capture af hvad jeg kan få frem: http://doomstone.dk/eksperten/Capture.JPG

Source kode.
http://doomstone.dk/eksperten/GameOfLife.Source.rar
Avatar billede aaberg Nybegynder
08. april 2008 - 09:34 #1
Hvilken feilmeddelelse får du?
Avatar billede doomstone-dk- Nybegynder
08. april 2008 - 10:31 #2
Jeg får ingen fejl besked.
Programmet køre fint indtil jeg klikke/prøver at flytte vinduet så på jeg "Not Responding" på den.
Avatar billede pidgeot Nybegynder
08. april 2008 - 10:51 #3
Dit problem er at du ikke giver programmet tid til at behandle de beskeder der ligger og venter (eks. at du klikker på noget) - det er teknisk set ikke crashet, men det tror Windows.

Du har grundlæggende tre måder at håndere det på:
1) Du kan enten lege med noget tråd-værk, så du får splittet det op på den måde
2) Du kan indbygge en pause med Sleep, hvilket skulle lade den behandle tingene der (men det sløver selvfølgelig behandlingen ned)
3) Du kan bruge Application.DoEvents() for at behandle ventende beskeder på et passende tidspunkt i koden

Hvilken der passer bedst til dit formål er svært at sige, da det er en skoleopgave (med skoleopgaver kan den bedste løsning nogle gange godt være en anden end den man bør bruge i "det virkelige liv").
Avatar billede doomstone-dk- Nybegynder
09. april 2008 - 09:20 #4
Nu er jeg rimelig ny til C#, og har prøvet med sleep, og Application.DoEvents() men jeg kan ikke lige få det til at virke :(
Avatar billede pidgeot Nybegynder
09. april 2008 - 10:12 #5
Uddyb "kan ikke lige få det til at virke"...

...du er vel klar over at du skal placere det umiddelbart inden du afslutter din løkke?
Avatar billede doomstone-dk- Nybegynder
09. april 2008 - 11:20 #6
Ok har fået det til at virke nu :D jeg satte doeventes efter mit loop.
Nu har jeg sat den i den indereste.
Tusind tak for hjælpen.
Pidgeot vil du skrive noget som et svar?
Avatar billede pidgeot Nybegynder
09. april 2008 - 11:34 #7
Værsgo :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester