Weinen wundersschönen Tag Euch,
ich baue aus spaß gerade an einer Slot Maschine diese klappt auch recht gut nun habe ich aber das problem das beim 2ten mal gewonnen die (Früchte) nicht stimmen
[Bilder entfernt - Coffeebean]
hier ist es richtig
Hier ist es falsch
[Bilder entfernt - Coffeebean]
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;
using System.Diagnostics;
namespace Slotmashine
{
public partial class Form1 : Form
{
Random rand = new Random();
int[] liste = new int[16];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 16; i++)
{
liste[i] = 0;
pictureBox1.Image = null;
}
int line = 0;
bool gewonnen = false;
PictureBox[] picturebox = { pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, pictureBox7, pictureBox8, pictureBox9, pictureBox10, pictureBox11, pictureBox12, pictureBox13, pictureBox14, pictureBox15, pictureBox16 };
for (int i = 0; i < 16; i++)
{
liste[i] = rand.Next(1, 6);
// MessageBox.Show(Convert.ToString(liste[i]));
switch (liste[i])
{
case 1:
picturebox[i].Image = Properties.Resources.banana;
break;
case 2:
picturebox[i].Image = Properties.Resources.cherry;
break;
case 3:
picturebox[i].Image = Properties.Resources.grapes;
break;
case 4:
picturebox[i].Image = Properties.Resources.orange;
break;
case 5:
picturebox[i].Image = Properties.Resources.seven;
break;
default:
break;
}
}
Debug.WriteLine("");
Debug.WriteLine("");
for (int i = 0; i < 4; i++)
{
Debug.Write(liste[i]);
}
Debug.WriteLine("");
for (int iii = 4; iii < 8; iii++)
{
Debug.Write(liste[iii]);
}
Debug.WriteLine("");
for (int iii = 8; iii < 12; iii++)
{
Debug.Write(liste[iii]);
}
Debug.WriteLine("");
for (int iii = 12; iii < 16; iii++)
{
Debug.Write(liste[iii]);
}
if (liste[0] == 1 && liste[1] == 1 && liste[2] == 1 && liste[3] == 1)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 2 && liste[1] == 2 && liste[2] == 2 && liste[3] == 2)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 3 && liste[1] == 3 && liste[2] == 3 && liste[3] == 3)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 4 && liste[1] == 4 && liste[2] == 4 && liste[3] == 4)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 5 && liste[1] == 5 && liste[2] == 5 && liste[3] == 5)
{
gewonnen = true;
line = 1;
}
if (liste[5] == 1 && liste[6] == 1 && liste[7] == 1 && liste[8] == 1)
{
gewonnen = true;
line = 2;
}
if (liste[5] == 2 && liste[6] == 2 && liste[7] == 2 && liste[8] == 2)
{
gewonnen = true;
line = 2;
}
if (liste[5] == 3 && liste[6] == 3 && liste[7] == 3 && liste[8] == 3)
{
gewonnen = true;
line = 2;
}
if (liste[5] == 4 && liste[6] == 4 && liste[7] == 4 && liste[8] == 4)
{
gewonnen = true;
line = 2;
}
if (liste[5] == 5 && liste[6] == 5 && liste[7] == 5 && liste[8] == 5)
{
gewonnen = true;
line = 2;
}
if (liste[9] == 1 && liste[10] == 1 && liste[11] == 1 && liste[12] == 1)
{
gewonnen = true;
line = 3;
}
if (liste[9] == 2 && liste[10] == 2 && liste[11] == 2 && liste[12] == 2)
{
gewonnen = true;
line = 3;
}
if (liste[9] == 3 && liste[10] == 3 && liste[11] == 3 && liste[12] == 3)
{
gewonnen = true;
line = 3;
}
if (liste[9] == 4 && liste[10] == 4 && liste[11] == 4 && liste[12] == 4)
{
gewonnen = true;
line = 3;
}
if (liste[9] == 5 && liste[10] == 5 && liste[11] == 5 && liste[12] == 5)
{
gewonnen = true;
line = 3;
}
if (gewonnen == true)
{
MessageBox.Show("gewonnen " + line);
}
}
}
}
von der Programmierung her bin ich auch gerade nicht so angetan wüsste aber nicht wie es einfacher geht
BItte keinen externen Filehoster - [Hinweis] Wie poste ich richtig?
Deine Graphiken oben kann man nicht sehen, da sie auf privat stehen.
liste(x) kann doch nur 1 bis 5 beinhalten ?
Dann könntest Du dein Programm zusammenfassen zu :
linie = 0;
if (liste[1] == liste[2] && liste[1] == liste[3] && liste[1] == liste[4]) line = 1;
if (liste[5] == liste[6] && liste[5] == liste[7] && liste[5] == liste[8]) line = 2;
if (liste[9] == liste[10] && liste[9] == liste[11] && liste[9] == liste[12]) line = 3;
if (linie > 0) ...
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Danke hab ich angepasst.
ja genau die Liste kann den wert 1-5 haben.
für den einen Tipp bin ich dir dankbar sieht schon besser aus.
Vielleicht würde es dir einfacher fallen das ganze in eine eigene Klasse auszulagern.
Pseudo-Beispiel:
public class Machine(){
public bool RowTopWin{...} // gibt zurück ob 1. Zeile Gewinn
public bool RowMiddleWin{...}
public bool ColumnLeftWin{...}
}
Auch keine schlechte Idee leider ist der fehler mit den falschen früchten immer noch.
Die Zuordnung der Pictureboxen an das Array finde ich sehr unglücklich.
Was passiert wenn Du das nur einmal machst am Anfang in Form1_Load() ?
Was passiert wenn Du das Image direkt pictureBox1 zuordnest ?
Ich würde nur mit einem Array bzw. List <> arbeiten.
Alternativ ohne Array :
pictureBox1.Image = GetImage(liste[0]);
pictureBox2.Image = GetImage(liste[1]);
pictureBox3.Image = GetImage(liste[2]);
...
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Auch keine schlechte Idee leider ist der fehler mit den falschen früchten immer noch.
Da würdest du oder wir zumindest den Fehler auf den ersten Blick erkennen, und nicht wie bei diesem Wirrwarr 😉
@BerndFfm Stehe gerade auf dem schlauch was du meinst.
@JimStark finde den fehler trozdem nicht ^^
for (int i = 0; i < 16; i++) liste[i] = rand.Next(1, 6);
pictureBox1.Image = GetImage(liste[0]);
pictureBox2.Image = GetImage(liste[1]);
pictureBox3.Image = GetImage(liste[2]);
...
private Image GetImage(int nr)
{
if (nr == 1) return Properties.Resources.banana;
if (nr == 2) return Properties.Resources.cherry;
if (nr == 3) return Properties.Resources.grapes;
if (nr == 4) return Properties.Resources.orange;
if (nr == 5) return Properties.Resources.seven;
return null;
}
Mehr kann ich nicht schreiben sonst habe ich das fertig programmiert.
Wir wissen immer noch nicht was denn genau nicht funktioniert.
Mach die Bilder mal als Anhang an den Beitrag wie es gedacht ist.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
if (liste[0] == liste[1] && liste[0] == liste[2] && liste[0] == liste[3]) gewonnen = true;
if (liste[4] == liste[5] && liste[4] == liste[6] && liste[4] == liste[7]) gewonnen = true;
if (liste[8] == liste[9] && liste[8] == liste[10] && liste[8] == liste[11]) gewonnen = true;
if (liste[12] == liste[13] && liste[12] == liste[14] && liste[12] == liste[15]) gewonnen = true ;
so klappt es war also bei meiner auswertung falsch also der teil
if (liste[0] == 1 && liste[1] == 1 && liste[2] == 1 && liste[3] == 1)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 2 && liste[1] == 2 && liste[2] == 2 && liste[3] == 2)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 3 && liste[1] == 3 && liste[2] == 3 && liste[3] == 3)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 4 && liste[1] == 4 && liste[2] == 4 && liste[3] == 4)
{
gewonnen = true;
line = 1;
}
if (liste[0] == 5 && liste[1] == 5 && liste[2] == 5 && liste[3] == 5)
{
gewonnen = true;
line = 1;
}