Welcome to Dream.In.Code
Become a C# Expert!

Join 150,397 C# Programmers for FREE! Get instant access to thousands of C# experts, tutorials, code snippets, and more! There are 1,014 people online right now. Registration is fast and FREE... Join Now!




My first game in C#! Bingo time!

 
Reply to this topicStart new topic

My first game in C#! Bingo time!, Please give me some pointers/criticism.

papuccino1
3 Mar, 2008 - 03:04 PM
Post #1

D.I.C Head
**

Joined: 2 Mar, 2008
Posts: 91


My Contributions
I must warn you though, it WILL look retarded to most of you because I'm sure there are better ways, however right now I'm just looking for functionality not optimization. Here's where you guys come in, how can I make this code much much shorter. Shorter = better, right?

And here's a screenshot:
IPB Image


Finished Code:
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 BingoConLabels
{
    public partial class Form1 : Form
    {
        Random RandomClass = new Random();
        string[] numllamados = new string[15];

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int RandomNumber = RandomClass.Next(1, 100);
            numllamados[1] = Convert.ToString(RandomNumber);

            for (int i = 1; i <= 48; i++)
            {
                Label label = (Label)Controls["label" + i];
                label.Text = Convert.ToString(RandomClass.Next(1, 100));
                label.BackColor = Color.White;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {                          
            int RandomNumber = RandomClass.Next(1, 100);
            numllamados[1] = Convert.ToString(RandomNumber);
            this.listBox1.Items.Add(numllamados[1]);

            for (int i = 1; i <= 48; i++)
            {
                Label label = (Label)Controls["label" + i];
                if (label.Text == numllamados[1])
                label.BackColor = Color.GreenYellow;

                if (label1.BackColor == Color.GreenYellow && label2.BackColor == Color.GreenYellow && label3.BackColor == Color.GreenYellow && label4.BackColor == Color.GreenYellow && label5.BackColor == Color.GreenYellow && label6.BackColor == Color.GreenYellow && label7.BackColor == Color.GreenYellow && label8.BackColor == Color.GreenYellow && label9.BackColor == Color.GreenYellow && label10.BackColor == Color.GreenYellow && label11.BackColor == Color.GreenYellow && label12.BackColor == Color.GreenYellow && label13.BackColor == Color.GreenYellow && label14.BackColor == Color.GreenYellow && label15.BackColor == Color.GreenYellow && label16.BackColor == Color.GreenYellow)
                {
                    MessageBox.Show("Has hecho BINGO en el 1er Carton!");
                    break;
                }
                else
                {
                    if (label17.BackColor == Color.GreenYellow && label8.BackColor == Color.GreenYellow && label9.BackColor == Color.GreenYellow && label20.BackColor == Color.GreenYellow && label21.BackColor == Color.GreenYellow && label22.BackColor == Color.GreenYellow && label23.BackColor == Color.GreenYellow && label24.BackColor == Color.GreenYellow && label25.BackColor == Color.GreenYellow && label26.BackColor == Color.GreenYellow && label27.BackColor == Color.GreenYellow && label28.BackColor == Color.GreenYellow && label29.BackColor == Color.GreenYellow && label30.BackColor == Color.GreenYellow && label31.BackColor == Color.GreenYellow && label32.BackColor == Color.GreenYellow)
                    {
                        MessageBox.Show("Has hecho BINGO en el 2do Carton!");
                        break;
                    }
                    else
                    {
                        if (label33.BackColor == Color.GreenYellow && label34.BackColor == Color.GreenYellow && label35.BackColor == Color.GreenYellow && label36.BackColor == Color.GreenYellow && label37.BackColor == Color.GreenYellow && label38.BackColor == Color.GreenYellow && label39.BackColor == Color.GreenYellow && label40.BackColor == Color.GreenYellow && label41.BackColor == Color.GreenYellow && label42.BackColor == Color.GreenYellow && label43.BackColor == Color.GreenYellow && label44.BackColor == Color.GreenYellow && label45.BackColor == Color.GreenYellow && label46.BackColor == Color.GreenYellow && label47.BackColor == Color.GreenYellow && label48.BackColor == Color.GreenYellow)
                        {
                            MessageBox.Show("Has hecho BINGO en el 2do Carton!");
                            break;
                        }

                    }

                }

                


                
            }        
            
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int RandomNumber = RandomClass.Next(1, 100);
            numllamados[1] = Convert.ToString(RandomNumber);
            this.listBox1.Items.Clear();

            for (int i = 1; i <= 48; i++)
            {
                Label label = (Label)Controls["label" + i];
                label.BackColor = Color.White;
                label.Text = "";
            }
          
        }

        private void nuevoJuegoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int RandomNumber = RandomClass.Next(1, 100);
            numllamados[1] = Convert.ToString(RandomNumber);
            this.listBox1.Items.Clear();
            
            for (int i = 1; i <= 48; i++)
            {
                Label label = (Label)Controls["label" + i];
                label.Text = Convert.ToString(RandomClass.Next(1, 100));
                label.BackColor = Color.White;
            }
            
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void acercaDelJuegoToolStripMenuItem_Click(object sender, EventArgs e)
        {
                AboutBox1 form = new AboutBox1();
                form.Show();
                // or
                
                
        }              

        
    }
}


This post has been edited by papuccino1: 3 Mar, 2008 - 04:00 PM
User is offlineProfile CardPM
+Quote Post

papuccino1
RE: My First Game In C#! Bingo Time!
3 Mar, 2008 - 04:33 PM
Post #2

D.I.C Head
**

Joined: 2 Mar, 2008
Posts: 91


My Contributions
Any comments? Any comments at all? Come on, don't be shy. pirate.gif icon_up.gif

This post has been edited by papuccino1: 3 Mar, 2008 - 04:33 PM
User is offlineProfile CardPM
+Quote Post

baavgai
RE: My First Game In C#! Bingo Time!
3 Mar, 2008 - 04:54 PM
Post #3

Dreaming Coder
Group Icon

Joined: 16 Oct, 2007
Posts: 2,290



Thanked: 136 times
Dream Kudos: 475
Expert In: C, C++, Java, C#, ASP.NET, PHP, Perl, Python, Oracle, SQL Server, MySql, HTML, JavaScript, Lua, Cheese

My Contributions
Ok, this a pretty good trick Label label = (Label)Controls["label" + i];, most folks don't figure that one out right away. If you were to place all those lables inside a group box, you could just loop through the child controls. I'd use nicer names, like labBoard1Slot1 or something. Even better, load up a reference array for them at the begining.

I don't think this business has any hope of giving you the result you want:
CODE

                if (label1.BackColor == Color.GreenYellow && label2.BackColor == Color.GreenYellow && label3.BackColor == Color.GreenYellow && label4.BackColor == Color.GreenYellow && label5.BackColor == Color.GreenYellow && label6.BackColor == Color.GreenYellow && label7.BackColor == Color.GreenYellow && label8.BackColor == Color.GreenYellow && label9.BackColor == Color.GreenYellow && label10.BackColor == Color.GreenYellow && label11.BackColor == Color.GreenYellow && label12.BackColor == Color.GreenYellow && label13.BackColor == Color.GreenYellow && label14.BackColor == Color.GreenYellow && label15.BackColor == Color.GreenYellow && label16.BackColor == Color.GreenYellow)


Aren't you looking for lines across, down, or diagnal? Not just everything filled in?

One more thing, do you want to allow those random numbers repeated on the same board? e.g. 84 appears twice in the top board.

You asked for it. So far so good, though. smile.gif

User is online!Profile CardPM
+Quote Post

papuccino1
RE: My First Game In C#! Bingo Time!
3 Mar, 2008 - 05:02 PM
Post #4

D.I.C Head
**

Joined: 2 Mar, 2008
Posts: 91


My Contributions
QUOTE(baavgai @ 3 Mar, 2008 - 05:54 PM) *

Ok, this a pretty good trick Label label = (Label)Controls["label" + i];, most folks don't figure that one out right away. If you were to place all those lables inside a group box, you could just loop through the child controls. I'd use nicer names, like labBoard1Slot1 or something. Even better, load up a reference array for them at the begining.

I don't think this business has any hope of giving you the result you want:


Aren't you looking for lines across, down, or diagnal? Not just everything filled in?

One more thing, do you want to allow those random numbers repeated on the same board? e.g. 84 appears twice in the top board.

You asked for it. So far so good, though. smile.gif



I would like to implement looking for across, diagonals rows, etc. But I think that's too hard to do with labels. Is there a better tool to use instead of labels for this particular thing?

How would I go about checking repeated numbers? I noticed that but I was too tired to fix it. crazy.gif
User is offlineProfile CardPM
+Quote Post

baavgai
RE: My First Game In C#! Bingo Time!
4 Mar, 2008 - 06:27 AM
Post #5

Dreaming Coder
Group Icon

Joined: 16 Oct, 2007
Posts: 2,290



Thanked: 136 times
Dream Kudos: 475
Expert In: C, C++, Java, C#, ASP.NET, PHP, Perl, Python, Oracle, SQL Server, MySql, HTML, JavaScript, Lua, Cheese

My Contributions
I'd create an array to reference the labels, perhaps something like:
csharp

int Rows = 4;
int Cols = 4;

Lable[,] grid1 = new Lable[Rows, Cols];
for (int row = 0; row < Rows; row++) {
for (int col = 0; col < Cols; col++) {
int index = (row * Cols) + col + 1;
grid1[row, col] = (Label)controls["label" + index];
}
}


Now that you have an array, you can run all the checks you normally might.

For non repeats, just check the array to see if you've already used a value. If you have, choose another one.

To be honest, I'd create a class to hold the lables and other things, like state and value as a number. But that might be beyond the scope here.

Hope this helps.

User is online!Profile CardPM
+Quote Post

papuccino1
RE: My First Game In C#! Bingo Time!
6 Mar, 2008 - 02:29 PM
Post #6

D.I.C Head
**

Joined: 2 Mar, 2008
Posts: 91


My Contributions
Yes, it helped. But most of the stuff is chinese to me! biggrin.gif

I'll try some of the stuff out and update the first post. Maybe I'll finish the Bingo game with even more features.

So far things to do are:
*Add money to buy bingo cards, lose money, etc.
*Check full row, column, check diagonals.
*Play a sound file when someone makes a bingo.


How would I play a sound file? I can't see anything in the properties window of the form. :S

User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic
Time is now: 1/9/09 06:35PM

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter

Live C# Help!

C# Tutorials

Reference Sheets

C# Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month