Archief - c# snake

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

jens_vc

Legacy Member
Hello,

Ik heb een aantal jaar geleden een snake spel gemaakt in java en nu zou ik dat willen maken in C#. Maar kheb problemen bij het tekenen van de figuren, als in ze worden niet getekend.

De slang bestaat een hoofd (gif file), huid(png file) en dan nog bolletjes & sterretjes (png's).

Mijn teken functie ziet er zo uit:

public void paintComponent(Graphics g)
{

if (tekenBol)
{
bol.teken(g);
}

if (tekenSter)
{
ster.teken(g);
}

slang.teken(g);

}

met die in slang:

Image huid = Image.FromFile("..\\..\\huid.png");
Image kopOnder = Image.FromFile("..\\..\\kop_Onder.gif");
Image kopBoven = Image.FromFile("..\\..\\kop_Boven.gif");
Image kopLinks = Image.FromFile("..\\..\\kop_Links.gif");
Image kopRechts = Image.FromFile("..\\..\\kop_Rechts.gif");

public void teken(Graphics g)
{

for(int i=langer-1;i>=0;i--)
{
if(i==0)
{

if (boven)
{

g.DrawImage(kopBoven, x * 20 + 25, y * 20 + 45);

}
if (onder)
{

g.DrawImage(kopOnder, x * 20 + 25, y * 20 + 45);

}
if (links)
{
g.DrawImage(kopLinks, x * 20 + 25, y * 20 + 45);
}
if (rechts)
{
g.DrawImage(kopRechts , x * 20 + 25, y * 20 + 45);
}
}
else
{
g.DrawImage(huid, x*20+25, y*20+45);
}
}
}

maar er wordt niets op het scherm getoond..

In java was het "simpeler" met altijd 'repaint();' maar hoe kan ik dit nu ook in c# aan het werken krijgen?

Als je met deze code niet genoeg hebt kan ik eventueel ook de volledige code geven..

Mvg

RoelandK

Legacy Member
waar op probeer je te tekenen..?
Code:
      protected override void OnPaint(PaintEventArgs e)
       {
            DrawSnake(e);
            base.OnPaint(e);
        }

drawsnake is dan een functie zoals deze:
Code:
       private void DrawSnake(PaintEventArgs e)
        {
            Graphics graph = e.Graphics;
            SolidBrush brush = new SolidBrush(Color.Green);
            Pen pen = new Pen(Color.Blue, 20);
            graph.FillRectangle(brush,X, Y,20,20);
            CreateFood();
        }

jens_vc

Legacy Member
Gewoon op een paneel tekenen maar dan met gifs en pngs.

Je hebt dus een hoofdform met 4 knoppen. Als je op play duwt ga je naar het speelscherm en daar staat de score & naam van speler + een paneel. En op dat paneel wil ik de kop + huid van de slang gaan tekenen samen met de bolletjes en soms sterren :)

jens_vc

Legacy Member
Ik heb het probleem gevonden (denk ik toch), weet alleen nog niet hoe ik het moet oplossen..

Code:
  private void timer_Tick(object sender, EventArgs e)
        {
            aantalBewegingen++;

            if (onder)
            {

                slang.beweegOnder();
                this.Refresh();
                
            }

            if (boven)
            {

                slang.beweegBoven();
                this.Refresh();
            }

            if (links)
            {

                slang.beweegLinks();
                this.Refresh();
            }

            if (rechts)
            {

                slang.beweegRechts();
                this.Refresh();
            }

            if (slang.heeftKop())
            {
                verloren = true;
            }


            if (verloren)
            {
                System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                player.SoundLocation = "..//..//gameover.wav";
            }

            if (bol.opSlang(slang))
            {

                testScore = (35 - aantalBewegingen);

                if (testScore <= 0)
                {
                    testScore = 1;
                }

                score += testScore * level;
                aantalBollen++;

                do
                {
                    bol = new Bollen();
                    tekenBol = true;
                }
                while (bol.opSlang(slang));

                slang.verleng();
                aantalBewegingen = 0;

                if ((aantalBollen - opgegeten) == 4)
                    do
                    {
                        ster = new Sterren();
                        tekenBol = false;
                        tekenSter = true;
                    }
                    while (ster.opSlang(slang));
                this.Refresh();


                if (tekenSter)
                {

                    aantalBewegingen++;

                    if (ster.opSlang(slang))
                    {

                        System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                        player.SoundLocation = "..//..//cash.wav";

                        score += (70 - aantalBewegingen) * level;
                        opgegeten = aantalBollen;

                        tekenSter = false;
                        tekenBol = true;

                        slang.verleng();

                        aantalBewegingen = 0;
                        this.Refresh();
                    }

                    if (aantalBewegingen == 41) //= 20 bewegingen en dan verdwijnt de ster en komt er opnieuw een bolletje
                    {  

                        opgegeten = aantalBollen;
                        tekenSter = false;
                        tekenBol = true;
                        aantalBewegingen = 0;

                        this.Refresh();
                    }
                }
            }
        }

Dit is mijn code van de timer en overal waar this.Refresh(); staat, stond in java repaint(); waardoor de teken functie opgeroepen werd. Dit is dus hier niet het geval..

Hoe kan ik nu in die timer code er voor zorgen dat deze code wordt opgeroepen?
Code:
        public void paintComponent(PaintEventArgs g)
        {

            if (tekenBol)
            {
                bol.teken(g);
            }

            if (tekenSter)
            {
                ster.teken(g);
            }

            slang.teken(g);

        }

jens_vc

Legacy Member
private Graphics g;
Code:
private void timer_Tick(object sender, EventArgs e)
        {
            aantalBewegingen++;

            if (onder)
            {

                slang.beweegOnder();
                this.Refresh();
                
            }

            if (boven)
            {

                slang.beweegBoven();
                this.Refresh();
            }

            if (links)
            {

                slang.beweegLinks();
                this.Refresh();
            }

            if (rechts)
            {

                slang.beweegRechts();
                this.Refresh();
g.FillEllipse(new SolidBrush(Color.Red), 100, 100, 30, 30);
            }
Als ik dit nu doe (rechts is standaard true) dan krijg ik de error:
De objectverwijzing is niet op een exemplaar van een object ingesteld.

Iemand die weet hoe dit komt?

forloRn_

Legacy Member
jens_vc zei:
Als ik dit nu doe (rechts is standaard true) dan krijg ik de error:
De objectverwijzing is niet op een exemplaar van een object ingesteld.

Iemand die weet hoe dit komt?

Ja, dat wilt zeggen dat je de taal op Engels moet zetten. :tongue:

Ik ga een wilde gok doen als Java-programmeur en zeggen dat dat een NullReferenceException is. Heb je geen stack trace om op voort te gaan?

jens_vc

Legacy Member
forloRn_ zei:
Ja, dat wilt zeggen dat je de taal op Engels moet zetten. :tongue:

Ik ga een wilde gok doen als Java-programmeur en zeggen dat dat een NullReferenceException is. Heb je geen stack trace om op voort te gaan?

Het is inderdaad een nullReferenceException was unhandled :)

stack trace als in een try catch?

Jerre Muesli

Legacy Member
Stack Trace als in bvb
org.omg.CORBA.MARSHAL: com.ibm.ws.pmi.server.DataDescriptor; IllegalAccessException minor code: 4942F23E completed: No
at com.ibm.rmi.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:199)
at com.ibm.rmi.iiop.CDRInputStream.read_value(CDRInputStream.java:1429)
at com.ibm.rmi.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:625)
at com.ibm.rmi.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:273)
at com.ibm.rmi.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:189)
at com.ibm.rmi.iiop.CDRInputStream.read_value(CDRInputStream.java:1429)

Destiser

Legacy Member
Waar haal je in godsnaam de g van in
g.FillEllipse(new SolidBrush(Color.Red), 100, 100, 30, 30);?

Misschien best eens even de full code geven, ik maak nu en dan custom controls in C# en Invalidate() lukt me altijd om te doen hertekenen, zou me verbazen mocht dat bij u niet het geval zijn.

edit: override je onpaint wel, en hoe?

jens_vc

Legacy Member
Kzal de volledige code in een spoiler tonen van elk scherm & klassen.
hoofdform:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;

namespace JensVerlinden_SICT
{
    public struct Highscore
    {
        public string speler;
        public int score;
    };


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
                     
       
        }
        //Highscores
        public static Highscore[] HighScores = new Highscore[5];
        //naam
        public static string speler = "Snake";
        //zien of spel bezig is
        public bool gameBezig = false;
        //speelscherm
		private SpeelScherm speelScherm = null; 

        private void btnOption_Click(object sender, EventArgs e)
        {
            Options option = new Options();
            option.ShowDialog(this);
        }

        private void btnHighscores_Click(object sender, EventArgs e)
        {
            LoadHighscores();
            Highscores highscore = new Highscores();
            highscore.ShowDialog(this);

        }

        //Highscores laden
        public static bool LoadHighscores()
        {
            try
            {
                XmlDocument xmlHighscores = new XmlDocument();

                xmlHighscores.Load("..\\..\\Highscores.xml");                

                XmlElement root = xmlHighscores.DocumentElement;

                for (int i = 0; i < 5; i++)
                {
                    XmlNode node = root.SelectSingleNode("Score[@id='" + i.ToString() + "']");

                    HighScores[i] = new Highscore();
                    HighScores[i].speler = node.Attributes["Speler"].Value;
                    HighScores[i].score = Convert.ToInt32(node.FirstChild.Value);
                }

                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
                return false;
            }
        }

        //Highscores opslaan
        public static bool ScoreOpslagen(int score)
        {
            try
            {
                bool update = false;
                int vervangen = -1;

                for (int i = 4; i >= 0; i--)
                {
                    if (score > HighScores[i].score)
                    {
                        update = true;
                        vervangen = i;
                    }
                }

                if (update)
                {
                    //onderliggende Highscores doorschuiven
                    for (int i = 4; i > vervangen; i--)
                    {
                        HighScores[i].speler = HighScores[i - 1].speler;
                        HighScores[i].score = HighScores[i - 1].score;
                    }

                    HighScores[vervangen].speler = Form1.speler;
                    HighScores[vervangen].score = score;

                    XmlDocument highscore = new XmlDocument();

                    highscore.Load("..\\..\\Instellingen\\Highscores.xml");

                    XmlElement root = highscore.DocumentElement;

                    XmlNode node = root.SelectSingleNode("Score[@id='" + vervangen.ToString() + "']");
                    node.FirstChild.Value = score.ToString();
                    node.Attributes["Speler"].Value = Form1.speler;

                    highscore.Save("..\\..\\Highscores.xml");

                }
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
                return false;
            }
        }
        

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnPlay_Click(object sender, EventArgs e)
        {
            this.Hide();
            SpeelScherm speelscherm = new SpeelScherm();
            speelscherm.ShowDialog(this);
            this.Close();

            gameBezig = true;
        }

         //Toetsenbord doorsturen
		private void MainForm_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
		{
			//Als Tetris spel bezig is
			if(gameBezig)
			{
                speelScherm.toetsenbordInpunt( e );
			}
		}
        }

      

    }

speelscherm:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{
    public partial class SpeelScherm : Form
    {
        private bool gameIsBezig = true;
        private Slang slang;
        private Bollen bol;
        private Sterren ster;
        private bool onder, boven, links, rechts, verloren, tekenBol, tekenSter;
        private int aantalBollen, score, level, aantalBewegingen, testScore, opgegeten;
        
        //toegevoegd
        private Graphics g ;
        private Graphics screen;
        private Bitmap offscreen;

        public SpeelScherm()
        {
            InitializeComponent();
            this.Height = 400;
            this.Width = 300;
            timer.Enabled = this.gameIsBezig;

            slang = new Slang();
            bol = new Bollen();
            ster = new Sterren();

            //toegevoegd
            offscreen = new Bitmap(250, 250);
            g = Graphics.FromImage(offscreen);
            screen = PlayArea.CreateGraphics();

            rechts = true;
            tekenBol = true;
            score = 0;
            opgegeten = 0;

        }

        private void SpeelScherm_Load(object sender, EventArgs e)
        {
            lblSpeler.Text = Form1.speler;

        }


        //Spel loopt ?
        public bool getGameIsBezig()
        {
            return this.gameIsBezig;
        }


        //Toetsenbord controle
        public void toetsenbordInpunt(System.Windows.Forms.KeyEventArgs key)
        {
            if (key.KeyCode == Keys.Escape)
            {
                //spel stoppen
                this.gameIsBezig = false;
                //  doeGameOver();
            }

            //spel is bezig en er is een figuur dan gaan kijken naar toetsenbord input
            if (this.getGameIsBezig() != null)
            {
                //Bewegingen					
                switch (key.KeyCode)
                {
                    case Keys.Up: //2x hetzelfde in de if & else lus omdat het anders niet te goei werkte.
                        if (boven)
                        {
                            onder = false;
                            boven = true;
                        }
                        else
                        {
                            onder = false;
                            boven = true;
                        }
                        links = false;
                        rechts = false;
                        break;

                    case Keys.Down:
                        if (onder)
                        {
                            boven = false;
                            onder = true;
                        }
                        else
                        {
                            boven = false;
                            onder = true;
                        }
                        links = false;
                        rechts = false;
                        break;

                    case Keys.Right:
                        if (rechts)
                        {
                            links = false;
                            rechts = true;
                        }
                        else
                        {
                            links = false;
                            rechts = true;
                        }
                        onder = false;
                        boven = false;
                        break;

                    case Keys.Left:
                        if (links)
                        {
                            links = true;
                            rechts = false;
                        }
                        else
                        {

                            links = true;
                            rechts = false;
                        }
                        onder = false;
                        boven = false;
                        break;
                }
            }
        }
        public void paintComponent(PaintEventArgs g)
        {

            if (tekenBol)
            {
                bol.teken(g);
            }

            if (tekenSter)
            {
                ster.teken(g);
            }

            slang.teken(g);

        }   

        private void timer_Tick(object sender, EventArgs e)
        {
            aantalBewegingen++;

            if (onder)
            {

                slang.beweegOnder();
                this.Invalidate();
                
            }

            if (boven)
            {

                slang.beweegBoven();
                this.Invalidate();
            }

            if (links)
            {

                slang.beweegLinks();
                this.Invalidate();
                
            }

            if (rechts)
            {
                
                slang.beweegRechts();
                this.Invalidate();
                //dit wordt nu getekend, maar eigenlijk zouden de gif en png moeten getekend worden van in slang en bol of ster
                g.Clear(Color.White);
                g.FillEllipse(new SolidBrush(Color.Red), 50, 50, 10, 10);          
            }

            screen.DrawImage(offscreen, 0, 0); //toegevoegd

            if (slang.heeftKop())
            {
                verloren = true;
            }


            if (verloren)
            {
                System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                player.SoundLocation = "..//..//gameover.wav";
            }

            if (bol.opSlang(slang))
            {

                testScore = (35 - aantalBewegingen);

                if (testScore <= 0)
                {
                    testScore = 1;
                }

                score += testScore * level;
                aantalBollen++;

                do
                {
                    bol = new Bollen();
                    tekenBol = true;
                }
                while (bol.opSlang(slang));

                slang.verleng();
                aantalBewegingen = 0;

                if ((aantalBollen - opgegeten) == 4)
                    do
                    {
                        ster = new Sterren();
                        tekenBol = false;
                        tekenSter = true;
                    }
                    while (ster.opSlang(slang));
                this.Invalidate();


                if (tekenSter)
                {

                    aantalBewegingen++;

                    if (ster.opSlang(slang))
                    {

                        System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                        player.SoundLocation = "..//..//cash.wav";

                        score += (70 - aantalBewegingen) * level;
                        opgegeten = aantalBollen;

                        tekenSter = false;
                        tekenBol = true;

                        slang.verleng();

                        aantalBewegingen = 0;
                        this.Invalidate();
                    }

                    if (aantalBewegingen == 41) //= 20 bewegingen en dan verdwijnt de ster en komt er opnieuw een bolletje
                    {  

                        opgegeten = aantalBollen;
                        tekenSter = false;
                        tekenBol = true;
                        aantalBewegingen = 0;

                        this.Invalidate();
                    }
                }
            }
        }


        public int getScoren()
        {

            return score;
        }

      /*  public void setTimer(int timerLeven, int level)
        {

            timer = new Timer(timerLeven, new TimerHandler());
            this.level = level;
        }*/

    }
}

klasse slang:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{
    class Slang
    {
        private int[] x = { 10, 9, 8, 7 };
        private int[] y = { 10, 10, 10, 10 };
        private int[] arrayX;
        private int[] arrayY;
        private int helpX, helpY, helpX2, helpY2;
        private int langer;
        Image huid = Image.FromFile("..\\..\\huid.png");
        Image kopOnder = Image.FromFile("..\\..\\kop_Onder.gif");
        Image kopBoven = Image.FromFile("..\\..\\kop_Boven.gif");
        Image kopLinks = Image.FromFile("..\\..\\kop_Links.gif");
        Image kopRechts = Image.FromFile("..\\..\\kop_Rechts.gif");
        private bool onder, boven, links, rechts, verloren;


        public Slang()
        {

            rechts = true;
            langer = 4;
        }

        public void verleng()
        {

            langer++;
            arrayX = new int[langer];
            arrayY = new int[langer];

            for (int i = 0; i < langer - 1; i++)
            {

                arrayX[i] = x[i];
                arrayY[i] = y[i];
            }

            if (links)
            {

                arrayX[langer - 1] = x[langer - 2];
                arrayY[langer - 1] = y[langer - 2];

            }

            if (rechts)
            {

                arrayX[langer - 1] = x[langer - 2];
                arrayY[langer - 1] = y[langer - 2];
            }

            if (onder)
            {

                arrayX[langer - 1] = x[langer - 2];
                arrayY[langer - 1] = y[langer - 2];
            }

            if (boven)
            {

                arrayX[langer - 1] = x[langer - 2];
                arrayY[langer - 1] = y[langer - 2];
            }

            x = new int[langer];
            y = new int[langer];

            for (int i = 0; i <= langer - 1; i++)
            {

                x[i] = arrayX[i];
                y[i] = arrayY[i];
            }

        }

        public int getX1()
        {

            helpX = x[0] * 20 + 25;
            return helpX;
        }

        public int getY1()
        {

            helpY = y[0] * 20 + 45;
            return helpY;
        }

        public int[] getX()
        {

            return x;
        }

        public int[] getY()
        {

            return y;
        }

        public void beweegLinks()
        {

            for (int i = langer - 1; i >= 1; i--)
            {

                x[i] = x[i - 1];
                y[i] = y[i - 1];
            }

            links = true;
            rechts = false;
            onder = false;
            boven = false;

            if (x[0] == 0)
            {

                x[0] = 19; //slang laten bewegen door de muur en langst andere kant er doorkomen.
            }
            else
                x[0]--;
        }

        public void beweegRechts()
        {

            for (int i = langer - 1; i >= 1; i--)
            {

                x[i] = x[i - 1];
                y[i] = y[i - 1];
            }

            rechts = true;
            links = false;
            onder = false;
            boven = false;

            if (x[0] == 19)
            {

                x[0] = 0;
            }
            else
                x[0]++;

        }

        public void beweegOnder()
        {

            for (int i = langer - 1; i >= 1; i--)
            {

                x[i] = x[i - 1];
                y[i] = y[i - 1];
            }

            onder = true;
            links = false;
            rechts = false;
            boven = false;

            if (y[0] == 19)
            {

                y[0] = 0;
            }
            else
                y[0]++;


        }

        public void beweegBoven()
        {

            for (int i = langer - 1; i >= 1; i--)
            {

                x[i] = x[i - 1];
                y[i] = y[i - 1];
            }

            boven = true;
            links = false;
            rechts = false;
            onder = false;


            if (y[0] == 0)
            {

                y[0] = 19;
            }
            else
                y[0]--;
        }

        public bool heeftKop()
        {

            for (int i = 1; i < langer - 1; i++)
            {

                helpX2 = 25 + x[i] * 20;
                helpY2 = 45 + y[i] * 20;

                if (helpX2 == getX1() && helpY2 == getY1())//kijken of slang gebotst is op slang. Heel het array doorlopen met allé slang delen en kijken of het botst op een deel.
                {

                    verloren = true;
                }
            }
            return verloren;
        }

         public void teken(PaintEventArgs g)
         {

             for(int i=langer-1;i>=0;i--)
             {
                 if(i==0)
                 {

                     if (boven)
                     {

                         //g.DrawImage(kopBoven, x[i] * 20 + 25, y[i] * 20 + 45);
                         g.Graphics.DrawImage(kopBoven, x[i] * 20 + 25, y[i] * 20 + 45);

                     }
                     if (onder)
                     {

                         //g.DrawImage(kopOnder, x[i] * 20 + 25, y[i] * 20 + 45);
                         g.Graphics.DrawImage(kopOnder, x[i] * 20 + 25, y[i] * 20 + 45);
                     }
                     if (links)
                     {
                         //g.DrawImage(kopLinks, x[i] * 20 + 25, y[i] * 20 + 45);
                         g.Graphics.DrawImage(kopLinks, x[i] * 20 + 25, y[i] * 20 + 45);
                     }
                     if (rechts)
                     {
                       //g.DrawImage(kopRechts , x[i] * 20 + 25, y[i] * 20 + 45);
                         g.Graphics.DrawImage(kopRechts, x[i] * 20 + 25, y[i] * 20 + 45);
                     }
                 }
                 else
                 {
                    //g.DrawImage(huid, x[i]*20+25, y[i]*20+45);
                     g.Graphics.DrawImage(huid, x[i] * 20 + 25, y[i] * 20 + 45);
                    
                 }
             }
         }
    }
    
}

klasse bollen:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{
    class Bollen
    {

     private int x, y, helpX, helpY, helpX2, helpY2;
     private bool bolOpSlang;
     protected Image bol = Image.FromFile("..\\..\\bol.png");
     private int []arrayX;
     private int []arrayY;
    static Random random = new Random();

     public Bollen()
     {

         helpX = (int)(20 * random.Next()); //random X coordinaat genereren.
         helpY = (int)(20 * random.Next()); //random Y coordinaat genereren.

         x = 25 + helpX * 20; // x coordinaat met juiste afmetingen voor botsing te detecteren.
         y = 45 + helpY * 20; // y coordinaat met juiste afmetingen voor botsing te detecteren.

         
     }

     public void teken(PaintEventArgs g)
    {

        g.Graphics.DrawImage(bol, x, y);
        
    }
    public bool opSlang (Slang s)
    {

        arrayX = s.getX();
        arrayY = s.getY();

        bolOpSlang = false;

        for (int i = 1; i < arrayX.Length; i++)
        {

            helpX2 = 25 + arrayX[i] * 20;
            helpY2 = 45 + arrayY[i] * 20;

            if (x == helpX2 && y == helpY2)
            {
                bolOpSlang = true;
            }
        }

        return bolOpSlang;
    }
 }
}

klasse sterren:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{
    class Sterren
    {

        private int x, y, helpX, helpY, helpX2, helpY2;
        private bool sterOpSlang;
        protected Image ster = Image.FromFile("..\\..\\ster.png");
        private int []arrayX;
        private int []arrayY;
        static Random random = new Random();

         public Sterren()
         {

            helpX = (int)(20D * random.Next()); //random X coordinaat genereren.
            helpY = (int)(20D * random.Next()); //random Y coordinaat genereren.

             x = 25 + helpX * 20; // x coordinaat met juiste afmetingen voor botsing te detecteren.
             y = 45 + helpY * 20; // y coordinaat met juiste afmetingen voor botsing te detecteren.

     }

    public void teken(PaintEventArgs g)
    {

        g.Graphics.DrawImage(ster, x, y);

    }
    public bool opSlang (Slang s)
    {

        arrayX = s.getX();
        arrayY = s.getY();

        sterOpSlang = false;

        for (int i = 1; i < arrayX.Length; i++)
        {

            helpX2 = 25 + arrayX[i] * 20;
            helpY2 = 45 + arrayY[i] * 20;

            if (x == helpX2 && y == helpY2)
            {
                sterOpSlang = true;

            }
        }
        return sterOpSlang;
    }
 }
}

bollenlijst:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace JensVerlinden_SICT
{
    class BollenLijst
    {

        private ArrayList bollen;


        public BollenLijst()
        {

            bollen = new ArrayList();
        }

        public void voegToe(Bollen b)
        {

            bollen.Add(b);
        }
    }
}

sterrenlijst:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace JensVerlinden_SICT
{
    class SterrenLijst
    {

        private ArrayList sterren;

        public SterrenLijst()
        {

            sterren = new ArrayList();
        }

        public void voegToe(Sterren st)
        {

            sterren.Add(st);
        }
    } 
}

highscore form:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{


    public partial class Highscores : Form
    {
        public Highscores()
        {
            InitializeComponent();

        }


        private void Highscores_Load(object sender, EventArgs e)
        {
            //HighScores
            showHighscores();
        }


        //Highscores weergeven (XML bestand)
        public void showHighscores()
        {
            lblSpeler1.Text = Form1.HighScores[0].speler;
            lblSpeler2.Text = Form1.HighScores[1].speler;
            lblSpeler3.Text = Form1.HighScores[2].speler;
            lblSpeler4.Text = Form1.HighScores[3].speler;
            lblSpeler5.Text = Form1.HighScores[4].speler;
            lblScore1.Text = Form1.HighScores[0].score.ToString();
            lblScore2.Text = Form1.HighScores[1].score.ToString();
            lblScore3.Text = Form1.HighScores[2].score.ToString();
            lblScore4.Text = Form1.HighScores[3].score.ToString();
            lblScore5.Text = Form1.HighScores[4].score.ToString();
        }

    }
}

optie form:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{
    public partial class Options : Form
    {
        public Options()
        {
            InitializeComponent();
        }

        private void Options_Load(object sender, EventArgs e)
        {
            //Speler
            txtbSpeler.Text = Form1.speler;
        }

        private void rbtnLevel1_Checked(object sender, EventArgs e)
        {
            rbtnLevel1.Checked = true;
            rbtnLevel2.Checked = false;
            rbtnLevel3.Checked = false;
            rbtnLevel4.Checked = false;
        }

        private void rbtnLevel2_Checked(object sender, EventArgs e)
        {
            rbtnLevel1.Checked = false;
            rbtnLevel2.Checked = true;
            rbtnLevel3.Checked = false;
            rbtnLevel4.Checked = false;

        }

        private void rbtnLevel3_Checked(object sender, EventArgs e)
        {
            rbtnLevel1.Checked = false;
            rbtnLevel2.Checked = false;
            rbtnLevel3.Checked = true;
            rbtnLevel4.Checked = false;
        }

        private void rbtnLevel4_Checked(object sender, EventArgs e)
        {
            rbtnLevel1.Checked = false;
            rbtnLevel2.Checked = false;
            rbtnLevel3.Checked = false;
            rbtnLevel4.Checked = true;
        }

    }
}

De bedoeling is dus als je een level kunt instellen in optie's (1-4) naargelang welke radiobutton wordt de timer aangepast (sneller of trager). Als je op play klikt begint het spel en zou de slang (lengte 4: kop + 3 stukjes huid) moeten worden getekend + een bolletjes om op te eten..

Probleem is dat ik met de paintcomponent functie van java nog zit en dus die niet worden aangeroepen in slang en bol / ster..

Destiser

Legacy Member
je hoofdprobleem zit dus wel degelijk in het feit dat je onpaint niet override.
Voeg dit eens toe in je speelscherm:

protected override void OnPaint(PaintEventArgs e)
{
PaintComponent(e.Graphics);
//base.OnPaint(e);
}

Indien het niet direct lukt, vervang je refreshes door invalidates

jens_vc

Legacy Member
Als ik dat toevoeg kreeg ik de ene keer als ik het spel run een vierkant met een rood kruis in (over de hoofdform) en als ik het dan nog eens run dan wordt de slang wel getekend en beweegt ze.

Ze zou enkel op het paneel moeten getekend worden en de bollen of sterren zou ook moeten getekend worden..

Alvast bedankt!

jens_vc

Legacy Member
Nog eens een vraag bij het doorsturen van het toetsenbord.

In mijn main form (Form1) staats:
gameBezig staat momenteel altijd op true.
Code:
		private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
		{
			
			if(gameBezig)
			{
                speelScherm.toetsenbordInpunt( e );
			}
		}

en in speelscherm:
Code:
 public void toetsenbordInpunt(System.Windows.Forms.KeyEventArgs key)
        {
            if (key.KeyCode == Keys.Escape)
            {
                //  doeGameOver();
                this.Close();
            }
...(nog meer code)
}
Maar als je op escape duwt gebeurt er niets..

Iemand een idee?

edit: volledig code
form1:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;

namespace JensVerlinden_SICT
{
    public struct Highscore
    {
        public string speler;
        public int score;
    };


    public partial class Form1 : Form
    {
        //Highscores
        public static Highscore[] HighScores = new Highscore[5];
        //naam
        public static string speler = "Snake";
        //zien of spel bezig is
        public bool gameBezig = true;
        //speelscherm
        private SpeelScherm speelScherm = null; 

        public Form1()
        {
            InitializeComponent();  
        }
        

        private void btnOption_Click(object sender, EventArgs e)
        {
            Options option = new Options();
            option.ShowDialog(this);
        }

        private void btnHighscores_Click(object sender, EventArgs e)
        {
            LoadHighscores();
            Highscores highscore = new Highscores();
            highscore.ShowDialog(this);

        }

        //Highscores laden
        public static bool LoadHighscores()
        {
            try
            {
                XmlDocument xmlHighscores = new XmlDocument();

                xmlHighscores.Load("..\\..\\Highscores.xml");                

                XmlElement root = xmlHighscores.DocumentElement;

                for (int i = 0; i < 5; i++)
                {
                    XmlNode node = root.SelectSingleNode("Score[@id='" + i.ToString() + "']");

                    HighScores[i] = new Highscore();
                    HighScores[i].speler = node.Attributes["Speler"].Value;
                    HighScores[i].score = Convert.ToInt32(node.FirstChild.Value);
                }

                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
                return false;
            }
        }

        //Highscores opslaan
        public static bool ScoreOpslagen(int score)
        {
            try
            {
                bool update = false;
                int vervangen = -1;

                for (int i = 4; i >= 0; i--)
                {
                    if (score > HighScores[i].score)
                    {
                        update = true;
                        vervangen = i;
                    }
                }

                if (update)
                {
                    //onderliggende Highscores doorschuiven
                    for (int i = 4; i > vervangen; i--)
                    {
                        HighScores[i].speler = HighScores[i - 1].speler;
                        HighScores[i].score = HighScores[i - 1].score;
                    }

                    HighScores[vervangen].speler = Form1.speler;
                    HighScores[vervangen].score = score;

                    XmlDocument highscore = new XmlDocument();

                    highscore.Load("..\\..\\Instellingen\\Highscores.xml");

                    XmlElement root = highscore.DocumentElement;

                    XmlNode node = root.SelectSingleNode("Score[@id='" + vervangen.ToString() + "']");
                    node.FirstChild.Value = score.ToString();
                    node.Attributes["Speler"].Value = Form1.speler;

                    highscore.Save("..\\..\\Highscores.xml");

                }
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
                return false;
            }
        }
        

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnPlay_Click(object sender, EventArgs e)
        {
            this.Hide();
            speelScherm = new SpeelScherm(this);
            speelScherm.ShowDialog(this);
            this.Close();
        }

         //Toetsenbord doorsturen
		private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
		{
			
			if(gameBezig)
			{
                speelScherm.toetsenbordInpunt( e );
			}
		}
        }
    }

speelscherm:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace JensVerlinden_SICT
{
    public partial class SpeelScherm : Form
    {
        private Form form = null;

        private bool gameIsBezig = false;
        private Slang slang;
        private Bollen bol;
        private Sterren ster;
        private bool onder, boven, links, rechts, verloren, tekenBol, tekenSter;
        private int aantalBollen, score, level, aantalBewegingen, testScore, opgegeten;
        
        //toegevoegd
        private Graphics g ;
        private Graphics screen;
        private Bitmap offscreen;

        private Keys direction;
        private Keys arrow;

        public SpeelScherm(Form frm)
        {
            InitializeComponent();

            //de pointer naarform
            form = frm; 

            slang = new Slang();
            bol = new Bollen();
            ster = new Sterren();

            //toegevoegd
            offscreen = new Bitmap(250, 250);
            g = Graphics.FromImage(offscreen);
            screen = PlayArea.CreateGraphics();

            rechts = true;
            tekenBol = true;
            score = 0;
            opgegeten = 0;


           direction = Keys.Right;
           arrow = direction;

        }

        private void SpeelScherm_Load(object sender, EventArgs e)
        {
            lblSpeler.Text = Form1.speler;

        }


        //Spel loopt ?
        public bool getGameIsBezig()
        {
            return this.gameIsBezig;
        }


       //Toetsenbord controle
        public void toetsenbordInpunt(System.Windows.Forms.KeyEventArgs key)
        {
            if (key.KeyCode == Keys.Escape)
            {
                //  doeGameOver();
                this.Close();
            }

            //spel is bezig en er is een figuur dan gaan kijken naar toetsenbord input
            if (this.gameIsBezig!=null)
            {
                //Bewegingen					
                switch (key.KeyCode)
                {
                    case Keys.Up: //2x hetzelfde in de if & else lus omdat het anders niet te goei werkte.
                        if (boven)
                        {
                            onder = false;
                            boven = true;
                        }
                        else
                        {
                            onder = false;
                            boven = true;
                        }
                        links = false;
                        rechts = false;
                        break;

                    case Keys.Down:
                        if (onder)
                        {
                            boven = false;
                            onder = true;
                        }
                        else
                        {
                            boven = false;
                            onder = true;
                        }
                        links = false;
                        rechts = false;
                        break;

                    case Keys.Right:
                        if (rechts)
                        {
                            links = false;
                            rechts = true;
                        }
                        else
                        {
                            links = false;
                            rechts = true;
                        }
                        onder = false;
                        boven = false;
                        break;

                    case Keys.Left:
                        if (links)
                        {
                            links = true;
                            rechts = false;
                        }
                        else
                        {

                            links = true;
                            rechts = false;
                        }
                        onder = false;
                        boven = false;
                        break;
                }
            }
        }
        public void paintComponent(PaintEventArgs g)
        {

            if (tekenBol)
            {
                bol.teken(g);
            }

            if (tekenSter)
            {
                ster.teken(g);
            }

            slang.teken(g);

        }

        protected override void OnPaint(PaintEventArgs e)
        {
            paintComponent(e);
            base.OnPaint(e);
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            aantalBewegingen++;

         /* if (((((arrow == Keys.Left) && (direction != Keys.Right)) ||
          (arrow == Keys.Right) && (direction != Keys.Left)) ||
          (arrow == Keys.Up) && (direction != Keys.Down)) ||
          (arrow == Keys.Down) && (direction != Keys.Up))
                direction = arrow;

            switch (direction)
            {
                case Keys.Left:
                    slang.beweegLinks();
                    this.Invalidate();
                    break;
                case Keys.Right:
                    slang.beweegRechts();
                    this.Invalidate();
                    break;
                case Keys.Up:
                    slang.beweegBoven();
                    this.Invalidate();
                    break;
                case Keys.Down:
                    slang.beweegOnder();
                    this.Invalidate();
                    break;
                case Keys.Escape:
                    this.Close();
                    Application.Exit();
                    break;
            }*/

            if (onder)
            {

                slang.beweegOnder();
                this.Invalidate();
                
            }

            if (boven)
            {

                slang.beweegBoven();
                this.Invalidate();
            }

            if (links)
            {

                slang.beweegLinks();
                this.Invalidate();
                
            }

            if (rechts)
            {
                
                slang.beweegRechts();
                this.Invalidate();
                //dit wordt nu getekend, maar eigenlijk zouden de gif en png moeten getekend worden van in slang en bol of ster
                //g.Clear(Color.White);
               // g.FillEllipse(new SolidBrush(Color.Red), 50, 50, 10, 10);          
            }

            screen.DrawImage(offscreen, 0, 0); //toegevoegd

            if (slang.heeftKop())
            {
                verloren = true;
            }


            if (verloren)
            {
                System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                player.SoundLocation = "..//..//gameover.wav";
            }

            if (bol.opSlang(slang))
            {

                testScore = (35 - aantalBewegingen);

                if (testScore <= 0)
                {
                    testScore = 1;
                }

                score += testScore * level;
                aantalBollen++;

                do
                {
                    bol = new Bollen();
                    tekenBol = true;
                }
                while (bol.opSlang(slang));

                slang.verleng();
                aantalBewegingen = 0;

                if ((aantalBollen - opgegeten) == 4)
                    do
                    {
                        ster = new Sterren();
                        tekenBol = false;
                        tekenSter = true;
                    }
                    while (ster.opSlang(slang));
                this.Invalidate();


                if (tekenSter)
                {

                    aantalBewegingen++;

                    if (ster.opSlang(slang))
                    {

                        System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                        player.SoundLocation = "..//..//cash.wav";

                        score += (70 - aantalBewegingen) * level;
                        opgegeten = aantalBollen;

                        tekenSter = false;
                        tekenBol = true;

                        slang.verleng();

                        aantalBewegingen = 0;
                        this.Invalidate();
                    }

                    if (aantalBewegingen == 41) //= 20 bewegingen en dan verdwijnt de ster en komt er opnieuw een bolletje
                    {  

                        opgegeten = aantalBollen;
                        tekenSter = false;
                        tekenBol = true;
                        aantalBewegingen = 0;

                        this.Invalidate();
                    }
                }
            }
        }


        public int getScoren()
        {

            return score;
        }

        protected override void OnKeyDown(KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.Left) ||
                (e.KeyCode == Keys.Right) ||
                (e.KeyCode == Keys.Up) ||
                (e.KeyCode == Keys.Down))
                arrow = e.KeyCode;
        }

        protected override bool IsInputKey(Keys keyData)
        {
            return true;
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            gameIsBezig = true;
            timer.Enabled = this.gameIsBezig;

            direction = Keys.Right;
            arrow = direction;
        }

      /*  public void setTimer(int timerLeven, int level)
        {

            timer = new Timer(timerLeven, new TimerHandler());
            this.level = level;
        }*/

    }
}

jens_vc

Legacy Member
toetsenbord probleem is opgelost, maar nu zit ik weer met iets eigenaardig..

Ik werk met bolletjes en sterren en normaal na 4 bolletjes moet er een ster komen (die wordt ook getekend), maar als ik dan de ster wil vangen gaat de slang er gewoon door :s.

Als ik dit op 1 zet (dus bolletje dan ster en terug bolletje,..) dan werkt het wel.. Alleen zit soms dan nog met een probleem dat er een ster blijft staan en toch terug een bolletjes getekend wordt..

Kzou misschien denken iets met de timer? Als de ster getekend wordt start er een timer en na zoveel seconde moet de ster verdwijnen.


Het stuk code als ik de eerste if op 1 zet ipv 4 werkt het wel, maar met 4 niet meer..
Code:
                if ((aantalBollen - opgegeten) == 4)
                    do
                    {
                        ster = new Sterren();
                        tekenBol = false;
                        tekenSter = true;
                        aantalBewegingen++;
                        
                    }
                    while (ster.opSlang(slang));
                this.Invalidate();

volledige code van dat form:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace JensVerlinden_SICT
{
    public partial class SpeelScherm : Form
    {
        private bool gameIsBezig = false;
        private Slang slang;
        private Bollen bol;
        private Sterren ster;
        private bool onder, boven, links, rechts, verloren, tekenBol, tekenSter;
        private int aantalBollen = 0, score = 0, aantalBewegingen = 0, testScore = 0, opgegeten = 0, level = 0;
        private XmlDocument doc;
        private Form1 form1 = null; 

        public SpeelScherm()
        {
            this.InitializeComponent();

            slang = new Slang();
            bol = new Bollen();
            ster = new Sterren();

            rechts = true;
            tekenBol = true;
            score = 0;
            opgegeten = 0;
        }

        private void SpeelScherm_Load(object sender, EventArgs e)
        {
            //aanpassingen opslaan in XML		
       /*     XmlElement root = doc.DocumentElement;
            XmlNode node = root.SelectSingleNode("Speler");
            node.FirstChild.Value = lblSpeler.Text;*/

            
            lblSpeler.Text = Options.spelerNaam;

            if (Options.level1)
            {
                timer.Interval = 1000;
                level = 1;
            }

            if (Options.level2)
            {
                timer.Interval = 750;
                level = 2;
            }

            if (Options.level3)
            {
                timer.Interval = 450;
                level = 3;
            }

            if (Options.level4)
            {
                timer.Interval = 250;
                level = 4;
            }
        }


        //Spel loopt ?
        public bool getGameIsBezig()
        {
            return this.gameIsBezig;
        }

        private void SpeelScherm_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            toetsenbordInpunt(e);
        }

       //Toetsenbord controle
        public void toetsenbordInpunt(System.Windows.Forms.KeyEventArgs key)
        {
            if (key.KeyCode == Keys.Escape)
            {
                doeGameOver(score);               
            }

            //spel is bezig dan gaan kijken naar toetsenbord input
            if (this.gameIsBezig!=null)
            {
                //Bewegingen					
                switch (key.KeyCode)
                {
                    case Keys.Up: //2x hetzelfde in de if & else lus omdat het anders niet te goei werkte (slang blijft stilstaan, reden niet bekend).
                        if (boven)
                        {
                            onder = false;
                            boven = true;
                        }
                        else
                        {
                            onder = false;
                            boven = true;
                        }
                        links = false;
                        rechts = false;
                        break;

                    case Keys.Down:
                        if (onder)
                        {
                            boven = false;
                            onder = true;
                        }
                       else
                        {
                            boven = false;
                            onder = true;
                        }
                        links = false;
                        rechts = false;
                        break;

                    case Keys.Right:
                        if (rechts)
                        {
                            links = false;
                            rechts = true;
                        }
                        else
                        {
                            links = false;
                            rechts = true;
                        }
                        onder = false;
                        boven = false;
                        break;

                    case Keys.Left:
                        if (links)
                        {
                            links = true;
                            rechts = false;
                        }
                       else
                        {

                            links = true;
                            rechts = false;
                        }
                        onder = false;
                        boven = false;
                        break;
                }
            }
        }
        public void paintComponent(PaintEventArgs g)
        {

            if (tekenBol)
            {
                bol.teken(g);
            }

            if (tekenSter)
            {
                ster.teken(g);
            }

            slang.teken(g);

        }
        //voor altijd te herpainten, anders wordt slang niet getekend
        protected override void OnPaint(PaintEventArgs e)
        {
            paintComponent(e);
            base.OnPaint(e);
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            aantalBewegingen++;

            if (onder)
            {
                slang.beweegOnder();
                this.Invalidate(); //refreshen (opnieuw painten)            
            }

            if (boven)
            {
                slang.beweegBoven();
                this.Invalidate();
            }

            if (links)
            {
                slang.beweegLinks();
                this.Invalidate();              
            }

            if (rechts)
            {
                slang.beweegRechts();
                this.Invalidate();       
            }

            if (slang.heeftKop())
            {
                verloren = true;
            }

            if (verloren)
            {
                System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                player.SoundLocation = "..//..//gameover.wav";
                player.Play();
                doeGameOver(score);
            }

            if (bol.opSlang(slang))
            {
                testScore = (35 - aantalBewegingen);

                if (testScore <= 0)
                {
                    testScore = 1;
                }

                score += testScore * level;
                lblScore.Text = score.ToString();
                aantalBollen++;

                do
                {
                    bol = new Bollen();
                    tekenBol = true;
                }
                while (bol.opSlang(slang));

                slang.verleng();
                aantalBewegingen = 0;

                if ((aantalBollen - opgegeten) == 4)
                    do
                    {
                        ster = new Sterren();
                        tekenBol = false;
                        tekenSter = true;
                        aantalBewegingen++;
                        
                    }
                    while (ster.opSlang(slang));
                this.Invalidate();


                if (tekenSter)
                {
                    sterTimer.Start();                    

                    if (ster.opSlang(slang))
                    {
                        System.Media.SoundPlayer player = new System.Media.SoundPlayer();
                        player.SoundLocation = "..//..//cash.wav";
                        player.Play();

                        score += (70 - aantalBewegingen) * level;
                        lblScore.Text = score.ToString();
                        opgegeten = aantalBollen;

                        tekenSter = false;
                        tekenBol = true;

                        slang.verleng();

                        aantalBewegingen = 0;
                        this.Invalidate();
                    }
                }
            }
        }


        public int getScoren()
        {
            return score;
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            gameIsBezig = true;
            timer.Enabled = this.gameIsBezig;
        }

        private void sterTimer_Tick(object sender, EventArgs e)
        {
            opgegeten = aantalBollen;
            tekenSter = false;
            tekenBol = true;
            aantalBewegingen = 0;
            sterTimer.Stop();
            sterTimer.Dispose();
            sterTimer.Enabled = false;
            this.Invalidate();
        }

        private void doeGameOver(int score)
        {
            this.gameIsBezig = false;
            timer.Enabled = false;

            //Score opslaan
            Form1.ScoreOpslagen(score);

            string tekst = "Verloren! Uw score: " + score + "\n Terug naar beginscherm ?";

            if (MessageBox.Show(tekst, "Game Over", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Hide();
                form1 = new Form1();
                form1.ShowDialog(this);
                this.Close();
            }
            else
            {
                this.Close();
            }
        }
    }
}

Iemand dat kan helpen?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan