Page 2 of 2 First 12

Thread: c# snake

  1. #16
    jens_vc's Avatar
    Registered
    05/03/03
    Location
    Nijlen
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/4
    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!
    Spoiler:
    no votes  

  2. #17
    jens_vc's Avatar
    Registered
    05/03/03
    Location
    Nijlen
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/4
    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
    Spoiler:
    Last edited by jens_vc; 13-07-2012 at 16:25.
    Spoiler:
    no votes  

  3. #18
    jens_vc's Avatar
    Registered
    05/03/03
    Location
    Nijlen
    Posts
    2,703
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/4
    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 .

    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?
    Spoiler:
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in