Spiel + Stoppuhr "zur selben zeit".

Blackhawk50000

Erfahrenes Mitglied
Ich hoffe ich kann alles richtig erklähren.

Ich habe 4 Windows Forms

Form1.cs
Form2.cs
Highscores.cs
geschaft.cs

und natürlich die programm.cs und was sonst noch dazu gehört.

Ich möchte volgendes machen:

Das programm leuft so ab... ach was solls, ich copiere alles rein dann seht ihr selbst, und dann stelle ich die Frage.


die Program.cs
Code:
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace Zahlenraten
{
    static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

die Highscores.cs
Code:
ausing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Zahlenraten
{
    public partial class Highscores : Form
    {
        public Highscores()
        {
            InitializeComponent();
        }

        string _filepath = @"C:\Programme\Zahlenraten\Hightscores.doc";


        private void Highscores_Load(object sender, EventArgs e)
        {
            try
            {
                StreamReader meineLeseratte = File.OpenText(@_filepath);
                richHighscores.Text = (meineLeseratte.ReadToEnd());
                meineLeseratte.Close();
            }
           catch (Exception)
            {
                richHighscores.Text = "Es wurde noch kein Spiel gespielt";
            }
        }

        private void zurück_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void reset_Click(object sender, EventArgs e)
        {
            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
            DialogResult result;

            result = MessageBox.Show(this, "Sind sie sicher, dass sie die Highscores-Tabelle löschen möchten?", "Wollen sie wirklich löschen?", buttons, MessageBoxIcon.Warning);

            if (result == DialogResult.Yes)
            {
                MessageBox.Show(this, "Geht aber noch nicht!ÄTSCH! :-P");
            }
            else
            {
                MessageBox.Show(this, "Gut, währe eh nicht gegangen -Ha Ha-! :-P");
            }
        }
    }
}

die geschaft.cs
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Zahlenraten
{
    public partial class geschaft : Form
    {
        public geschaft()
        {
            InitializeComponent();
        }

        private void geschaft_Load(object sender, EventArgs e)
        {
            
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

die Form2.cs
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Zahlenraten
{
    public partial class Form2 : Form
    {
        public int zzg;


        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }


        
        private void button1_Click(object sender, EventArgs e)
        {        

            if (radioButton1.Checked == true)
            {
                System.Random r = new System.Random();
                zzg = r.Next(11);
                MessageBox.Show("Es wurde eine Geheimzahl zwischen 1 und 10 erzeugt! Finde sie, und viel Spaß dabei");
            }
            else if (radioButton2.Checked == true)
            {
                System.Random r = new System.Random();
                zzg = r.Next(101);
                MessageBox.Show("Es wurde eine Geheimzahl zwischen 1 und 100 erzeugt! Finde sie, und viel Spaß dabei");
            }
            else if (radioButton3.Checked == true)
            {
                System.Random r = new System.Random();
                zzg = r.Next(1001);
                MessageBox.Show("Es wurde eine Geheimzahl zwischen 1 und 1000 erzeugt! Finde sie, und viel Spaß dabei");
            }
            else if (radioButton4.Checked == true)
            {
                System.Random r = new System.Random();
                zzg = r.Next(10001);
                MessageBox.Show("Es wurde eine Geheimzahl zwischen 1 und 10000 erzeugt! Finde sie, und viel Spaß dabei");
            }
 
            this.Close();
            

        }
            
    }
}

die Form1.cs
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;

namespace Zahlenraten
{
    public partial class Form1 : Form
    {
        private int _iMaxWert;
        public Form1()
        {
            InitializeComponent();
        }

        DateTime _zeitBeginn1;
        DateTime _zeitStop1;
        int _zähler;
        string _filepath = @"C:\Programme\Zahlenraten\Hightscores.doc";

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 waehlen = new Form2();
            waehlen.ShowDialog(this);

            _zeitBeginn1 = DateTime.Now;

            _iMaxWert = waehlen.zzg;
            waehlen.Dispose();

            this.button1.Visible = false;
            this.button2.Visible = true;
            this.richTextBox1.Visible = true;
            this.label3.Visible = true;
            this.panel1.Visible = true;
            this.label2.Visible = true;
            this.textBox1.Visible = true;
            this.textBox1.Focus();
            this.label1.Text = _iMaxWert.ToString();
            this.button2.Enabled = true;
            this.textBox1.ReadOnly = false;
            this._zähler = 0;

        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (_zähler == 19)
            {
                this.button4.Visible = true;
                this.button3.Visible = true;
                this.button2.Enabled = false;
            }

            try
            {

                if (_iMaxWert < Convert.ToInt32(textBox1.Text))
                {
                    this.richTextBox1.Text = "Diese Zahl " + Convert.ToInt32(textBox1.Text) + " ist leider zu groß\n\n" + richTextBox1.Text;
                    this.textBox1.Text = ("");
                    this.richTextBox1.ScrollToCaret();
                    this.textBox1.Focus();
                    this._zähler += 1;
                }
                else if (_iMaxWert > Convert.ToInt32(textBox1.Text))
                {
                    this.richTextBox1.Text = "Diese Zahl " + Convert.ToInt32(textBox1.Text) + " ist leider zu klein\n\n" + richTextBox1.Text;
                    this.textBox1.Text = ("");
                    this.richTextBox1.ScrollToCaret();
                    this.textBox1.Focus();
                    this._zähler += 1;
                }
                else
                {
                    this._zeitStop1 = DateTime.Now;
                    TimeSpan _zeitSpiel1 = _zeitStop1 - _zeitBeginn1;
                    this._zähler += 1;
                    this.richTextBox1.Text = "Du hast richtig geraten\n\n" + richTextBox1.Text;
                    this.label1.Visible = true;
                    this.textBox1.ReadOnly = true;
                    this.richTextBox1.ScrollToCaret();
                    this.richTextBox1.Text = "Du hast die Zahl " + _iMaxWert + " mit " + _zähler + " Versuchen gefunden! Deine Spielzeit war " + _zeitSpiel1.Minutes + " Minuten und " + _zeitSpiel1.Seconds + " Sekunden" + "\n\n" + richTextBox1.Text;
                    this.button5.Visible = true;
                    this.button2.Enabled = false;
                    this.new_game.Visible = true;
                    geschaft _geschaft = new geschaft();
                    _geschaft.ShowDialog();
                }


             
        }
        catch (FormatException)
        {
            this.textBox1.Text = ("Bitte eine Zahl eingeben");
            this.textBox1.SelectAll();
        }
           
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.button4.Visible = false;
            this.button3.Visible = false;
            this.button2.Enabled = true;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this._zeitStop1 = DateTime.Now;
            TimeSpan _zeitSpiel1 = _zeitStop1 - _zeitBeginn1;
            this.richTextBox1.Text = "Du hast aufgegeben\n\n" + richTextBox1.Text;
            this.label1.Visible = true;
            this.textBox1.ReadOnly = true;
            this.richTextBox1.ScrollToCaret();
            this.richTextBox1.Text = "Du hast die Zahl " + _iMaxWert + " mit " + _zähler + " Versuchen nicht finden können! Deine Spielzeit war " + _zeitSpiel1.Minutes + " Minuten und " + _zeitSpiel1.Seconds + " Sekunden" + "\n\n" + richTextBox1.Text;
            this.button5.Visible = true;
            this.button2.Enabled = false;
            this.new_game.Visible = true;
            this.button3.Visible = false;
            this.button4.Visible = false;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            this.scoreSchreiben();
            Application.Exit();            
        }

        private void button6_Click(object sender, EventArgs e)
        {
            neustart();
        }

        private void neuesSpielToolStripMenuItem_Click(object sender, EventArgs e)
        {
            neustart();
        }

        private void bestzeitenAnzeigenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Highscores bestzeiten = new Highscores();
            bestzeiten.ShowDialog(this);
        }


        private void scoreSchreiben()
        {
            if (File.Exists(@_filepath))
            {
                StreamWriter meinSchreiberling = new StreamWriter(@_filepath, true);
                meinSchreiberling.WriteLine("");
                meinSchreiberling.WriteLine("");
                meinSchreiberling.WriteLine(DateTime.Now);
                meinSchreiberling.WriteLine(richTextBox1.Text);
                meinSchreiberling.Close();
            }
            else
            {
                Directory.CreateDirectory(@"C:\Programme\Zahlenraten\");
                StreamWriter meinSchreiberling = File.CreateText(@_filepath);
            }
        }

        private void neustart()
        {
            this.panel1.Visible = false;

            this.textBox1.Visible = false;

            this.richTextBox1.Visible = false;

            this.label1.Visible = false;
            this.label2.Visible = false;
            this.label3.Visible = false;

            this.button2.Visible = false;
            this.button3.Visible = false;
            this.button4.Visible = false;
            this.button5.Visible = false;
            this.new_game.Visible = false;

            this.button1.Visible = true;
            this.scoreSchreiben();
            this.richTextBox1.Text = "";
            this.textBox1.Text = "";
        }
    }
}

also Form1 ist die Hauptform. Von ihr aus werden alle anderen Forms (für nicht sehr komplexe dinge) aufgerufen.

wärhend ich das spiel spiele, habe ich es geschaft die aktuelle Zeit beim start zu speichern, die zeit beim beenden und somit, die allgemeine spielzeit zu messen und anzeigen zu lassen.
das programm hat noch n paar andere features aber die sind jetzt nicht wichtig.

ich möchte das mit der zeit so machen, das ich ein weiteres label einbaue und dessen text wärend ich mein spiel spiele, verändere, so das das ändern des texttes nicht die ganze application lahm legt. das ganze soll mir threads gehen. schön und gut, aber wie genau stelle ich das SPEZIELL auf meinen code an? ich bitte um ein bisschen hilfe und viele kommentare warum die zeile dahin gehört und warum das so und das so gemacht wird....... ich danke eucht jetzt schon tausendfach.

und wegen der stoppuhr habe ich schon ne idee, wenn die aber nicht klappen sollte, dann poste ich hier im thema nochmal, und hoffe auch dann auf hilfe.....
danke schön und bussys :D
 
Punkt 1: Was heißt hier lange gewartet? das weniger als ein Tag! Das hier ist ein Forum, kein Chat!
Punkt 2: Apropos Chat: Halte dich bitte an die Netiquette!
Punkt 3: Ja, das ist die Anwort auf deine Frage! Wenn du dir die Klasse anschaust und etwas damit rumexperimentierst, wirst du merken, dass man im Tick-Event des Timers zum Beispiel den Text des Labels setzen könnte ;)
 
Zurück