Avatar billede mcgoat Nybegynder
03. januar 2009 - 23:41 Der er 1 kommentar og
1 løsning

Hjælp til Enarmet Tyveknægt

Hej. Har siddet i flere timer, og har ikke kunnet komme med en brugbar løsning so far.

En enarmet tyveknægt:

Man trykker Start. Der kommer 3 "billeder", hvis 2 af de billeder er ens, skal den holde på dem, man skal så selv kunne vælge at holde dem fra igen.

Men har de været holdt 1 gang, skal den ikke kunne holde på dem næste gang, og Hold knapperne skal være utilgængelige.

Har den derimod ikke holdt på noget, skal Hold knapperne være tilgængelige.

Ved ikke helt hvad jeg ellers skal skrive, har slettet meget af min kode, men here goes.

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.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // Public Variables
        public bool FirstSpin = true;
        public bool W1_Init = false;
        public bool W2_Init = false;
        public bool W3_Init = false;
        public bool Wheel1_Hold = false;
        public bool Wheel2_Hold = false;
        public bool Wheel3_Hold = false;
        public ImageList Wheel1_IList = new System.Windows.Forms.ImageList();
        public ImageList Wheel2_IList = new System.Windows.Forms.ImageList();
        public ImageList Wheel3_IList = new System.Windows.Forms.ImageList();
        public int Wheel1_Nr = 0;
        public int Wheel2_Nr = 0;
        public int Wheel3_Nr = 0;
        public Random Rnd_Nr = new Random();
        public int Credits = 400;
        // End of Public Variables

        public void Hold1()
        {
            if (!Wheel1_Hold)
            {
                Wheel1_Hold = true;
                btn_Hold1.ForeColor = Color.Red;
            }
            else
            {
                Wheel1_Hold = false;
                btn_Hold1.ForeColor = Color.Black;
            }
        }

        public void Hold2()
        {
            if (!Wheel2_Hold)
            {
                Wheel2_Hold = true;
                btn_Hold2.ForeColor = Color.Red;
            }
            else
            {
                Wheel2_Hold = false;
                btn_Hold2.ForeColor = Color.Black;
            }
        }

        public void Hold3()
        {
            if (!Wheel3_Hold)
            {
                Wheel3_Hold = true;
                btn_Hold3.ForeColor = Color.Red;
            }
            else
            {
                Wheel3_Hold = false;
                btn_Hold3.ForeColor = Color.Black;
            }
        }

        public bool IsAnyWheelsHold()
        {
            if (Wheel1_Hold == true || Wheel2_Hold == true || Wheel3_Hold == true)
            {
                return true;
            }
            return false;
        }

        public void CheckForWin(){
            Credits -= 2;

            if (Wheel1_Nr == Wheel2_Nr)
            {
                if (Wheel2_Nr == Wheel3_Nr)
                {
                    // 3 of a kind, lets see what the price is
                    int Price = 0;
                    if (Wheel1_Nr == 0) Price = 10;
                    if (Wheel1_Nr == 1) Price = 20;
                    if (Wheel1_Nr == 2) Price = 50;
                    if (Wheel1_Nr == 3) Price = 70;
                    if (Wheel1_Nr == 4) Price = 100;
                    if (Wheel1_Nr == 5) Price = 150;
                    if (Wheel1_Nr == 6) Price = 200;
                    if (Wheel1_Nr == 7) Price = 400;
                    if (Wheel1_Nr == 8) Price = 800;
                    if (Wheel1_Nr == 9) Price = 1000;
                    if (Wheel1_Nr == 10) Price = 1200;
                    if (Wheel1_Nr == 11) Price = 1500;
                    Credits += Price;
                    DEBUGLIST.Items.Add("Won: " + Price.ToString());
                    FirstSpin = true;
                }
            }
            lbl_Credits.Text = "Credits: " + Credits.ToString();
        }

        public void Init_Wheel1_IList()
        {
            Wheel1_IList.ColorDepth = System.Windows.Forms.ColorDepth.Depth24Bit;
            Wheel1_IList.ImageSize = new System.Drawing.Size(90, 80);

            string[] Wheel1_Files = null;
            try{
                Wheel1_Files = Directory.GetFiles("C:\\slot\\SlotMachine\\icons\\", "*.jpg");
            }
            catch (Exception e){
                MessageBox.Show("Can't find images. Error: " + e.ToString());
            }
           
            foreach (string Wheel1_File in Wheel1_Files)
            {
                Bitmap W1_BMap = new Bitmap(Wheel1_File);
                Wheel1_IList.Images.Add(W1_BMap);
            }
            W1_Init = true; // Wheel1 Imagelist initialized
        } // Function to Initialize Wheel1 ImageList

        public void Init_Wheel2_IList()
        {
            Wheel2_IList.ColorDepth = System.Windows.Forms.ColorDepth.Depth24Bit;
            Wheel2_IList.ImageSize = new System.Drawing.Size(90, 80);

            string[] Wheel2_Files = null;
            try
            {
                Wheel2_Files = Directory.GetFiles("C:\\slot\\SlotMachine\\icons\\", "*.jpg");
            }
            catch (Exception e)
            {
                MessageBox.Show("Can't find images. Error: " + e.ToString());
            }

            foreach (string Wheel2_File in Wheel2_Files)
            {
                Bitmap W2_BMap = new Bitmap(Wheel2_File);
                Wheel2_IList.Images.Add(W2_BMap);
            }
            W2_Init = true; // Wheel1 Imagelist initialized
        } // Function to Initialize Wheel2 ImageList

        public void Init_Wheel3_IList()
        {
            Wheel3_IList.ColorDepth = System.Windows.Forms.ColorDepth.Depth24Bit;
            Wheel3_IList.ImageSize = new System.Drawing.Size(90, 80);

            string[] Wheel3_Files = null;
            try
            {
                Wheel3_Files = Directory.GetFiles("C:\\slot\\SlotMachine\\icons\\", "*.jpg");
            }
            catch (Exception e)
            {
                MessageBox.Show("Can't find images. Error: " + e.ToString());
            }

            foreach (string Wheel3_File in Wheel3_Files)
            {
                Bitmap W3_BMap = new Bitmap(Wheel3_File);
                Wheel3_IList.Images.Add(W3_BMap);
            }
            W3_Init = true; // Wheel1 Imagelist initialized
        } // Function to Initialize Wheel3 ImageList

        public void Run_Wheel1()
        {
            if (!W1_Init) Init_Wheel1_IList(); // Init Wheel1 Imagelist
            Wheel1_Nr = Rnd_Nr.Next(Wheel1_IList.Images.Count);
            Wheel1_Image.Image = (System.Drawing.Image)Wheel1_IList.Images[Wheel1_Nr].Clone();
        } // Draw Picture from Wheel1 ImageList to Wheel1_Image

        public void Run_Wheel2()
        {
            if (!W2_Init) Init_Wheel2_IList(); // Init Wheel2 Imagelist
            Wheel2_Nr = Rnd_Nr.Next(Wheel2_IList.Images.Count);
            Wheel2_Image.Image = (System.Drawing.Image)Wheel2_IList.Images[Wheel2_Nr].Clone();
        } // Draw Picture from Wheel2 ImageList to Wheel2_Image

        public void Run_Wheel3()
        {
            if (!W3_Init) Init_Wheel3_IList(); // Init Wheel3 Imagelist
            Wheel3_Nr = Rnd_Nr.Next(Wheel3_IList.Images.Count);
            Wheel3_Image.Image = (System.Drawing.Image)Wheel3_IList.Images[Wheel3_Nr].Clone();
        } // Draw Picture from Wheel3 ImageList to Wheel3_Image

        private void btnStart_Click(object sender, EventArgs e){
            if (Credits >= 2)
            {
                if (Wheel1_Nr == Wheel2_Nr) { Hold1(); Hold2(); }
                if (Wheel1_Nr == Wheel3_Nr) { Hold1(); Hold3(); }
                if (Wheel2_Nr == Wheel3_Nr) { Hold2(); Hold3(); }
                if (!Wheel1_Hold) Run_Wheel1(); // Draw Wheel1 Image in Game
                if (!Wheel2_Hold) Run_Wheel2(); // Draw Wheel2 Image in Game
                if (!Wheel3_Hold) Run_Wheel3(); // Draw Wheel3 Image in Game
                CheckForWin();
            }
            else
            {
                MessageBox.Show("You don't have more credits!");
            }
        }

        private void btn_Hold1_Click(object sender, EventArgs e)
        {
            Hold1();
        }

        private void btn_Hold2_Click(object sender, EventArgs e)
        {
            Hold2();
        }

        private void btn_Hold3_Click(object sender, EventArgs e)
        {
            Hold3();
        }

    }
}
Avatar billede mcgoat Nybegynder
04. januar 2009 - 00:11 #1
fandt ud af det...
Avatar billede welcor Nybegynder
04. januar 2009 - 00:18 #2
Der er egentlig tale om en slags tilstandsmaskine:

ID  tilstand                                  Fortsættelse
A    Initialiseret, tre tomme felter            B (tryk start)
    vises, Start-knap er enabled,
    alle holdknapper disabled.

B    kører alle tre hjul. Hvis to              C (tryk en holdknap)
    hjul er ens, sættes hold på disse.        D (tryk start, mindst en holdknap)
    Alle knapper er tilgængelige.              B (tryk start, ingen holdknapper)

C    Status for holdknapperne ændres.          Som B

D    Kører hjul som ikke er holdt.              B (tryk start)
    Hold-knapper disabled.                   
    Startknap enabled.

E    Start er trykket uden nok credits

Jeg håber denne omskrivning får koden på glid.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester