C# játékban új játék kezdésének megvalósítása
2011-12-18T12:15:13+01:00
2011-12-19T10:19:45+01:00
2022-08-16T03:10:32+02:00
susy2007
Helló!
Egy újabb problémám lennem, mégpedig, hogy lemegy a játékom, kijön egy ablak melybe beírom a nevem, és elmenti egy txt fájlba az eredményeket,viszont utána ha szeretnék egy új játékot kezdeni, vagy pedig játék közben szeretnék új játékot kezdeni, akkor azt hogyan tehetem meg?
Köszönöm!!!!
Mutasd a teljes hozzászólást!

  • Alaphelyzetbe állítod a programot.
    Mutasd a teljes hozzászólást!
  • Ujraallitod az allapotokat es meghivod a jatekot indito metodust.
    Mutasd a teljes hozzászólást!
  • És ezt hogyan tudom megtenni?
    Mutasd a teljes hozzászólást!
  • GOTO ELEJE

    Van aki ezt inkább egy bonyolult ciklussal oldaná meg. Nem biztos, hogy arra hallgatni kell.


    int main(sokparaméter) { while(!kilép) { játék_indít(); } return(visszatérésikód); }
    Mutasd a teljes hozzászólást!
  • Itt a kódom, hova szúrjam be???


    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 Beadando3
    {

    public partial class Form1 : Form
    {
    private Button[,] _Table; // gombok a táblában
    private int pontok=0;
    private const int SZELE=3;
    private String nev;
    private string eleresiut = "C:\.....\";
    private Image[,] images; // képek eltárolásához

    public Form1()
    {
    InitializeComponent();
    Init();
    timer1.Tick += new System.EventHandler(this.timer1_Tick);
    }


    public void Init() {
    _Table = new Button[SZELE, SZELE];
    images = new Image[SZELE, SZELE];
    textBox1.Text = Convert.ToString(60);
    textBox2.Text = Convert.ToString(0);
    _Table = new Button[SZELE, SZELE];

    gombokatElhelyez();
    for (int i=0;i<SZELE;i++){
    for (int j=0;j<SZELE;j++){
    _Table[i, j].Click += new EventHandler(this.GombKlikk);
    this.Controls.Add(_Table[i, j]);
    }
    }
    timer1 = new Timer();
    timer1.Interval = 1000;
    timer1.Enabled = true;
    timer1.Start();

    }

    private void gombokatElhelyez() {

    for (int i = 0; i < SZELE; i++)
    {
    for (int j = 0; j < SZELE; j++)
    {
    _Table[i, j] = new Button();
    _Table[i, j].Size = new System.Drawing.Size(70, 70);
    _Table[i, j].Location = new Point(25 + 70 * i, 25 + 70 * j); // elhelyezkedés
    _Table[i, j].Visible = true;
    }
    }
    rajzol();
    }

    private void rajzol() {
    String kepnev;
    for (int i = 0; i < SZELE; i++)
    {
    for (int j = 0; j < SZELE; j++)
    {
    kepnev = eleresiut + "kep" + Convert.ToString(i) + Convert.ToString(j) + ".bmp";
    try
    {
    images[i, j] = Image.FromFile(kepnev);
    _Table[i, j].Image = images[i, j];
    }
    catch (FileNotFoundException)
    {
    images[i, j] = null;
    _Table[i, j].Text = "Nincs kép";
    }
    }
    }

    }
    public void KepeketKever() {
    Random rnd = new Random();

    for (int i = 0; i < SZELE; i++)
    {
    for (int j = 0; j < SZELE; j++) {
    int x = rnd.Next(0, 3);
    int y = rnd.Next(0, 3);
    Image imageswap = _Table[i, j].Image;
    _Table[i, j].Image = _Table[x, y].Image;
    _Table[x, y].Image = imageswap;
    }
    }

    }

    public void GombKlikk(Object sender,EventArgs e) {
    if (((Button)sender).Image.Equals(images[1, 2]) || ((Button)sender).Image.Equals(images[2, 0]) || ((Button)sender).Image.Equals(images[2, 1]))
    {
    pontok++;
    ((Button)sender).Image = Image.FromFile(eleresiut + "kep000.bmp");
    }
    else if (((Button)sender).Image.Equals(images[2, 2])) {
    pontok--;
    ((Button)sender).Image = Image.FromFile(eleresiut + "kep001.bmp");
    }
    else
    {

    }
    this.textBox2.Text =Convert.ToString(pontok);

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    rajzol();
    KepeketKever();
    int sz=Int32.Parse(textBox1.Text);
    if (sz > 0)
    {
    sz--;
    textBox1.Text = Convert.ToString(sz);
    }
    else {
    timer1.Stop();
    Dialog d = new Dialog();
    this.Enabled = false;
    d.ShowDialog(new Form());
    osszegez(this.textBox2.Text, d.Nev);
    Eredmenyek eredmenyek = new Eredmenyek();
    eredmenyek.Show();
    this.Enabled = true;

    if (d.DialogResult == DialogResult.OK)
    {
    MessageBox.Show(d.Nev+" "+textBox2.Text);
    }
    }
    }

    private void osszegez(String s, String i) {
    String line;
    List<String> l = new List<string>();
    if (File.Exists("eredmenyek.txt"))
    {
    StreamReader file = null;
    try
    {
    file = new StreamReader("eredmenyek.txt");
    while ((line = file.ReadLine()) != null)
    {
    l.Add(line);
    }
    }
    finally
    {
    if (file != null)
    file.Close();
    }
    }
    l.Add(s + " | " + i);

    l.Sort ();
    l.Reverse();


    StreamWriter sw = new StreamWriter("eredmenyek.txt");
    if (l.Count <= 10)
    {
    for (int j = 0; j < l.Count; j++)
    {
    sw.WriteLine(l[j]);
    }
    sw.Close();
    }
    else {
    for (int j = 10; j < 0; j--)
    {
    sw.WriteLine(l[j]);
    }
    sw.Close();
    }

    }



    private void setNev(String nev) {
    this.nev=nev;
    }

    private void btn_uj_Click(object sender, EventArgs e)
    {

    }
    }
    }
    Mutasd a teljes hozzászólást!
  • És, ha újra meghívnád a rajzol, kepeketkever függvényeket, és a timert nulláznád.
    Mutasd a teljes hozzászólást!
  • Az órát újraindítja, de a képeket nem keveri
    Mutasd a teljes hozzászólást!
  • Az igazat megvallva, én elvesztem a kódtömegben.
    az jó, hogy pár dolog funkciókra van szétosztva, és a struktúráltság nyomait is felfedeztem.
    Csak valahogy ésszerűtlenül vannak, össze-vissza következnek egymás után dolgok. Bár lehet, egyszerű volna a megoldás, én most mégse mennék bele.
    Mutasd a teljes hozzászólást!
  • Köszönöm szépen mindenkinek, aki próbált segíteni!! :)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd