Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Hulp gewenst bij C# opdracht :)

Pagina: 1
Acties:
  • 542 views

Verwijderd

Topicstarter
Hoi,

ik moet voor het vak programmeren de volgende opdracht uitvoeren in C#
Schrijf een programma voor het volgende raadspelletje. De bedoeling van het spel is dat de speler een getal van drie cijfers gaat raden, de cijfercombinatie van een fietsslot bijvoorbeeld. Het te raden getal wordt binnen het programma vastgelegd. Dit kan d.m.v het kiezen van een vaste waarde of door gebruik te maken van een randomizer. Per cijfer mag de speler drie keer raden. De speler start met een puntentotaal van 50 punten. Wanneer hij het cijfer raadt bij de eerste poging, worden er 10 punten bij zijn totaal bijgeteld. Wanneer hij het cijfer raadt bij de tweede poging, worden er 5 punten bij het totaal bijgeteld en bij de derde poging 2 punten.
Wanneer hij het cijfer na drie poging niet kon raden, wordt er van zijn punten totaal 10 punten afgetrokken.
De speler gaat dan verder met het tweede cijfer.
Omdat de speler start met 50 punten, is de slechtste score die hij kan halen 20, en de beste score 80 punten
Nu goed, ik heb mijn design zoals onderstaande afbeelding gemaakt:
Afbeeldingslocatie: http://i.imgur.com/BjvoPZU.png

Mijn code is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Opdracht_36
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int score = 50;
        int teller1 = 0, teller2 = 0, teller3 = 0;
        int code1 = 3, code2 = 8, code3 = 5;
        


        private void btnCijfer1_Click(object sender, EventArgs e)
        {
            
            int geraden1 = int.Parse(txtG1.Text);
            if (geraden1 != code1)
            { teller1++;

            if (teller1 == 1)
            { MessageBox.Show("Helaas, probeer het opnieuw. U heeft nog" + (3 - teller1) + " pogingen resterend."); }
            

            if (teller1 == 2)
            { MessageBox.Show("Helaas, probeer het opnieuw. U heeft nog" + (3 - teller1) + " poging resterend."); }

            if (teller1 == 3)
            { MessageBox.Show("Helaas, uw aantal pogingen zijn op. Ga verder met getal 2!"); }
                                                                                                    }
            
            
            if (geraden1 == code1)
            {MessageBox.Show("Goed gegokt! Ga verder met getal 2!");}
                
            
            


        }

        private void btnCijfer2_Click(object sender, EventArgs e)
        {
            int geraden2 = int.Parse(txtG2.Text);

            if (geraden2 != code2)
            { teller2++;

            if (teller2 == 1)
            { MessageBox.Show("Helaas, probeer het opnieuw. U heeft nog " + (3 - teller2) + " pogingen resterend."); }


            if (teller2 == 2)
            { MessageBox.Show("Helaas, probeer het opnieuw. U heeft nog " + (3 - teller2) + " poging resterend."); }


            if (teller2 == 3)
            { MessageBox.Show("Helaas, uw aantal pogingen zijn op. Ga verder met getal 3!"); }
            }

            if (geraden2 == code2)
            { MessageBox.Show("Goed gegokt! Ga verder met getal 3!"); }

        }

        private void btnCijfer3_Click(object sender, EventArgs e)
        {
            int geraden3 = int.Parse(txtG3.Text);

            if (geraden3 != code3)
            {
                teller3++;

                if (teller3 == 1)
                { MessageBox.Show("Helaas, probeer het opnieuw. U heeft nog " + (3 - teller3) + " pogingen resterend."); }


                if (teller3 == 2)
                { MessageBox.Show("Helaas, probeer het opnieuw. U heeft nog " + (3 - teller3) + " poging resterend."); }


                if (teller3 == 3)
                { MessageBox.Show("Helaas, uw aantal pogingen zijn op. Klik op de button om je score te berekenen!"); }
            }

            if (geraden3 == code3)
            { MessageBox.Show("Goed gegokt! Klik op de button om je score te berekenen."); }
        }

        private void btnScore_Click(object sender, EventArgs e)
        {
            if (teller1 == 0)
            { score = score + 10; }

            if (teller1 == 1)
            { score = score + 5; }

            if (teller1 == 2)
            { score = score + 2; }

            if (teller1 > 2)
            { score = score - 10; }

            //teller2 berekening

            if (teller2 == 0)
            { score = score + 10; }

            if (teller2 == 1)
            { score = score + 5; }

            if (teller2 == 2)
            { score = score + 2; }

            if (teller2 > 2)
            { score = score - 10; }

            //teller3 berekening

            if (teller3 == 0)
            { score = score + 10; }

            if (teller3 == 1)
            { score = score + 5; }

            if (teller3 == 2)
            { score = score + 2; }

            if (teller3 > 2)
            { score = score - 10; }


            
            txtScore.Text = score.ToString();
        }
        
        


        
    }
}


Mijn manier van programmeren zal vast een beetje omslachtig zijn, maar het werkte naar mijn idee wel. Totdat ik het ging uitvoeren. :[ De cijfers kan ik gewoon raden en de messageboxes werken naar behoren, maar als ik klik op de score button, verschijnt de volgende error:
Afbeeldingslocatie: http://i.imgur.com/zVndAPh.png

Iemand die raad weet? Voor het geval je m'n code in VS wilt bekijken, heb ik hier het hele bestand geüpload: Lees Kan iemand even...? even ;)

Alvast hartelijk bedankt! :D

[ Voor 1% gewijzigd door RobIII op 27-03-2013 01:22 ]


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Ik gebuik nooit c# maar ik gok zo dat je variabele niet is dedeclareerd. al je tellers enzo wel, maar niet "txtScore"

Iperf


  • xPhantom
  • Registratie: December 2008
  • Niet online
In je desgn file (Form1.designer.cs) zie ik geen 'txtScore', kijk eens in het properties venster naar de naam van je text veld, die zal hoogstwaarschijnlijk nog op 'textBox1' staan.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
xPhantom schreef op woensdag 27 maart 2013 @ 00:52:
In je desgn file (Form1.designer.cs) zie ik geen 'txtScore', kijk eens in het properties venster naar de naam van je text veld, die zal hoogstwaarschijnlijk nog op 'textBox1' staan.
^ Dat dus. Gewoon een kwestie van debuggen (Debuggen: Hoe doe ik dat?). En je hebt geluk want Visual Studio is, zeker voor .Net projecten, uitgerust met (IMHO) een van de beste debuggers ever. Met een klein beetje zelf zoeken was je hier zelf ook achter gekomen. Een tutorial die ik zo snel vond en die er op 't eerste gezicht wel goed uit ziet (ondanks dat 'ie voor VS2010 is, zoveel is er in VS2012 niet veranderd, zeker niet de basics) is deze.

Verder helpt 't als je je foutmelding niet als screenshot post maar gewoon als text plaatst:
System.NullReferenceException was unhandled
Object reference not set to an instance of an object.
Dan kan onze zoekmachine (en Google/duckduckgo/whatever) er ook nog wat mee voor mensen die in de toekomst op eenzelfde probleem stuiten.

Beperk je ook a.u.b. tot relevante code; van die hele zwik code waren hooguit een regel of 10 relevant en interessant geweest. Nu krijg je geheid nog een boel commentaar (terecht) op de rest van je code die helemaal niet relevant is voor je probleem. Daarbij moeten wij ons door een lap code van jewelste worstelen om iets zinnigs te kunnen zeggen (laat staan een end scrollen :P ).

Tot slot: probeer voortaan een betere topictitel te verzinnen zodat de titel de lading een beetje dekt; "Hulp gewenst bij C# opdracht :)" is nou niet echt een goede omschrijving van je probleem. Zie ook onze Quickstart (puntje 2 in dit geval) die je bij 't openen van een topic 't best even kunt hanteren.

Al-met-al gaat dit topic echter op slot om de simpele reden dat ik in je topic niets terug zie van je eigen poging(en) tot een oplossing te komen; ik zie niet of (en waarop) je gezocht hebt, wat je zelf geprobeerd hebt etc. Ook die zaken staan duidelijk omschreven in onze voorgenoemde quickstart en zijn toch wel een vereiste voor een goed topic :)

offtopic:
Wat betreft die opmerkingen die je zou hebben gekregen op je, voor je probleem irrelevante, code zou o.a. zijn dat je eens moet kijken naar DRY en het gebruik van functies (ook wel: methods).

[ Voor 37% gewijzigd door RobIII op 27-03-2013 01:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.