Grote straat

Status
Niet open voor verdere reacties.

Silty

Gebruiker
Lid geworden
15 sep 2008
Berichten
10
Hallo,

Ik heb weer een vraag, alleen heb ik dit keer al meer zelf kunnen doen. We hebben een opdracht gekregen om een programma te maken in windows form. Daar moeten dobbelstenen in staan, uiteindelijk moet er berekend worden of je een grote straat hebt gegooid. Waarschijnlijk heb ik iets fout zitten in me score(). Hij berekend namelijk nog niet of ik een grote straat heb.
Zo ziet hij er uit, heb er even bij gezet wat wat is.
grotestraat.jpg


En dit is de code die er achter zit:
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 Grote_straat
{
    public partial class Form1 : Form
    {
        int[] uitkomst = new int[7];
        int beurt = 0;
        int rnd = 0;
        

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (beurt == 0)
            {
                dobbel();
                beurt = 1;
                score();
                label9.Text = "Het is de beurt aan de computer";
            }
            else
            {
                dobbel();
                beurt = 0;
                score();
                label9.Text = "Het is uw beurt";
            }
        }
           
        //bepalen van de dobbelstenen
        public void dobbel()
        {
            Random gooidobbelsteen = new Random();
            int dobbelsteen;

            for (int i = 0; i < 5; i++)
            {
                dobbelsteen = gooidobbelsteen.Next(1,7);
                uitkomst[dobbelsteen]++;
                rnd = dobbelsteen;

                switch(i)
                {
                    case 0:
                        dobbelsteen1();
                        break;
                    case 1:
                        dobbelsteen2();
                        break;
                    case 2:
                        dobbelsteen3();
                        break;
                    case 3:
                        dobbelsteen4();
                        break;
                    case 4:
                        dobbelsteen5();
                        break;
                    default:
                        break;
                }
            }
        }

        public void dobbelsteen1()
        {
            if (rnd == 1)
            {
                pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen1;
            }
            if (rnd == 2)
            {
                pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen2;
            }
            if (rnd == 3)
            {
                pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen3;
            }
            if (rnd == 4)
            {
                pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen4;
            }
            if (rnd == 5)
            {
                pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen5;
            }
            if (rnd == 6)
            {
                pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen6;
            }
        }
        public void dobbelsteen2()
        {
            if (rnd == 1)
            {
                pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen1;
            }
            if (rnd == 2)
            {
                pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen2;
            }
            if (rnd == 3)
            {
                pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen3;
            }
            if (rnd == 4)
            {
                pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen4;
            }
            if (rnd == 5)
            {
                pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen5;
            }
            if (rnd == 6)
            {
                pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen6;
            }
        }
        public void dobbelsteen3()
        {
            if (rnd == 1)
            {
                pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen1;
            }
            if (rnd == 2)
            {
                pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen2;
            }
            if (rnd == 3)
            {
                pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen3;
            }
            if (rnd == 4)
            {
                pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen4;
            }
            if (rnd == 5)
            {
                pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen5;
            }
            if (rnd == 6)
            {
                pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen6;
            }
        }
        public void dobbelsteen4()
        {
            if (rnd == 1)
            {
                pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen1;
            }
            if (rnd == 2)
            {
                pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen2;
            }
            if (rnd == 3)
            {
                pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen3;
            }
            if (rnd == 4)
            {
                pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen4;
            }
            if (rnd == 5)
            {
                pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen5;
            }
            if (rnd == 6)
            {
                pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen6;
            }
        }
        public void dobbelsteen5()
        {
            if (rnd == 1)
            {
                pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen1;
            }
            if (rnd == 2)
            {
                pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen2;
            }
            if (rnd == 3)
            {
                pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen3;
            }
            if (rnd == 4)
            {
                pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen4;
            }
            if (rnd == 5)
            {
                pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen5;
            }
            if (rnd == 6)
            {
                pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen6;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            reset();
        }
        public void reset()
        {
            beurt = 0;
            label9.Text = "Het is uw beurt";
            pic1.Image = global::Grote_straat.Properties.Resources.dobbelsteen1;
            pic2.Image = global::Grote_straat.Properties.Resources.dobbelsteen2;
            pic3.Image = global::Grote_straat.Properties.Resources.dobbelsteen3;
            pic4.Image = global::Grote_straat.Properties.Resources.dobbelsteen4;
            pic5.Image = global::Grote_straat.Properties.Resources.dobbelsteen5;
        }
        public void score()
        {
            for (int i = 1; i < 7; i++)
            {
                if (uitkomst[i] == 1 + 2 + 3 + 4 + 5)
                {
                    if (beurt == 0)
                    {
                        label9.Text = "U heeft gewonnen";
                    }
                    else
                    {
                        label9.Text = "U heeft verloren";
                    }
                }
                if (uitkomst[i] == 2 + 3 + 4 + 5 + 6)
                {
                    if (beurt == 0)
                    {
                        label9.Text = "U heeft gewonnen";
                    }
                    else
                    {
                        label9.Text = "U heeft verloren";
                    }
                }
            }
        }
            


    }

}

Ik hoop dat er iemand is die me kan helpen.
 
Code:
 for (int i = 1; i < 7; i++)
            {
                if (uitkomst[i] == 1 + 2 + 3 + 4 + 5)
                {
                    if (beurt == 0)
                    {
                        label9.Text = "U heeft gewonnen";
                    }
                    else
                    {
                        label9.Text = "U heeft verloren";
                    }
                }
                if (uitkomst[i] == 2 + 3 + 4 + 5 + 6)
                {
                    if (beurt == 0)
                    {
                        label9.Text = "U heeft gewonnen";
                    }
                    else
                    {
                        label9.Text = "U heeft verloren";
                    }
                }
            }
Als ik je code goed begrijp....
Hierbij doorloop je altijd tot de laatste in de array.
Dus als hij bij de eerste al een true heeft, dan gaat hij alsnog door en kijken wat er in de volgende staat.

Wat je kan doen is een extra variable er tussen zetten.
En daarnaast de 2 controlefuncties samenvoegen.

Code:
 for (int i = 1; i < 7; i++)
            {
		if(!gewonnen)
		{
                	if (uitkomst[i] == 15 || uitkomst[i] == 20) //1 + 2 + 3 + 4 + 5 or 2 + 3 + 4 + 5 + 6
                	{
                    		if (beurt == 0)
                    		{
                        	label9.Text = "U heeft gewonnen";
				gewonnen = true;
                    		}
                    		else
                    		{
                        	label9.Text = "U heeft verloren";
                    		}
                	}
		}
            }
(je moet de boolean nog wel even bovenin declareren en in de reset terugzetten of false)

Maar je zit nu nog met 1 probleem.
als iemand bijvoorbeeld: 6, 6, 1, 1, 1 of 6, 6, 6, 1, 1 gooit keur jij het ook goed :)
 
Ik begrijp wat je ongeveer doet, alleen dat ! voor gewonnen (if(!gewonnen)) begrijp ik niet helemaal, waarom staat die daar?

Ik begrijp ook waarom 6+6+1+1+1 goed gekeurd wordt, want eigenlijk worden nu de getallen opgeteld.

Maar volgens mij pas ik zelf nu een array toe, dit is geen probleem, want we moeten deze opdracht 2x maken, met en zonder array...
 
Code:
Dus als hij bij de eerste al een true heeft, dan gaat hij alsnog door en kijken wat er in de volgende staat.
[/QUOTE]

De !gewonnen staat er om deze reden

Want als je nog doorgaat me kijken nadat je al gewonnen hebt en de volgende geeft aan dat je niet gewonnen zou hebben, heb je volgens je huidige code dan ook niet gewonnen.
 
Oke, bedankt :)
Ik ga nog even kijken of er een andere manier is om de code zo te krijgen, dat hij hem echt alleen goed berekend als je een straat gooit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan