locked
Jogo da Velha erro no Código RRS feed

  • Pergunta

  • Olá! Então... estou desenvolvendo um Jogo da Velha Simples para o Curso de Desenvolvimento de Jogos, e me deparei um um problema que não faço a minima Ideia do que está acontecendo, quando eu Inicio o Jogo e clico na casa onde eu quero que apareça o X ou a Bolinha não acontece nada, somente depois de alguns cliques que começa a aparecer e ainda fora de ordem... Me Ajudem Please!!

    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;
    
    namespace Jogo_da_Velha
    {
        public partial class Form1 : Form
        {
            int min, seg1, seg2, pont1, pont2, jogadorTime = 0;
            String[,] matrizJogo = new String[3,3]{
                {"","",""}
                ,{"","",""}
                ,{"","",""}
            };
            bool startGame = false;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void start_Click(object sender, EventArgs e)
            {
                startGame = true;
                player1.ForeColor = Color.LimeGreen;
                player2.ForeColor = Color.Red;
                if (startGame)
                {
                    start.Enabled = false;
                    timer1.Start();
                }
    
                else
                {
                    start.Enabled = false;
                    timer1.Stop();
                    player2.ForeColor = Color.DarkGray;
                    player1.ForeColor = Color.DarkGray;
                }
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                seg2++;
                if (seg2 > 9)
                {
                    seg2 = 0;
                    seg1++;
                }
                if (seg1 == 6)
                {
                    min++;
                    seg2 = 1;
                    seg1 = 0;
                }
                timer.Text = "" + min + ":" + seg1 + seg2;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                preenchimento(0, 0);
                button1.Text = matrizJogo[0, 0];
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                preenchimento(0, 1);
                button2.Text = matrizJogo[0, 1];
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                preenchimento(0, 2);
                button3.Text = matrizJogo[0, 2];
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                preenchimento(1, 0);
                button4.Text = matrizJogo[1, 0];
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                preenchimento(1, 1);
                button5.Text = matrizJogo[1, 1];
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
                preenchimento(1, 2);
                button6.Text = matrizJogo[1, 2];
            }
    
            private void button7_Click(object sender, EventArgs e)
            {
                preenchimento(2, 0);
                button7.Text = matrizJogo[2, 0];
            }
    
            private void button8_Click(object sender, EventArgs e)
            {
                preenchimento(2, 1);
                button8.Text = matrizJogo[2, 1];
            }
    
            private void button9_Click(object sender, EventArgs e)
            {
                preenchimento(2, 2);
                button9.Text = matrizJogo[2, 2];
            }
    
            public void preenchimento(int c, int l)
            {
                if (jogadorTime == 0 && matrizJogo[l, c] == "")
                {
                    matrizJogo[l, c] = "X";
                    jogadorTime = 1;
                    player2.ForeColor = Color.LimeGreen;
                    player1.ForeColor = Color.Red;
                }
                else if (jogadorTime == 1 && matrizJogo[l, c] == "")
                {
                    matrizJogo[l, c] = "O";
                    jogadorTime = 0;
                    player1.ForeColor = Color.LimeGreen;
                    player2.ForeColor = Color.Red;
                }
            }
        }
    }
    
    terça-feira, 4 de agosto de 2015 18:09

Respostas

  • Porque vc esta invertendo L e C aqui:

     public void preenchimento(int c, int l)

    e aqui 

     matrizJogo[l, c] 

    voce passa (2,1) mas na hora de associar a matriz vc faz (1,2)

    Mudei tambem a forma que vc incrementa o relogi.. creio que vc tenha feito do jeito anterior porque voce nao deve conhecer a formataçao de numeros.

    o codigo correto é 

    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;
    
    namespace Jogo_da_Velha
    {
        public partial class Form1 : Form
        {
            int min, seg, pont1, pont2, jogadorTime = 0;
            String[,] matrizJogo = new String[3, 3]{
                {"","",""}
                ,{"","",""}
                ,{"","",""}
            };
            bool startGame = false;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void start_Click(object sender, EventArgs e)
            {
                startGame = true;
                player1.ForeColor = Color.LimeGreen;
                player2.ForeColor = Color.Red;
                if (startGame)
                {
                    start.Enabled = false;
                    timer1.Start();
                }
    
                else
                {
                    start.Enabled = false;
                    timer1.Stop();
                    player2.ForeColor = Color.DarkGray;
                    player1.ForeColor = Color.DarkGray;
                }
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                seg++;
                if (seg > 60)
                {
                    seg = 0;
                    min++;
                }
                
                timer.Text = "" + min.ToString("00")+ ":" + seg.ToString("00");
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                preenchimento(0, 0);
                button1.Text = matrizJogo[0, 0];
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                preenchimento(0, 1);
                button2.Text = matrizJogo[0, 1];
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                preenchimento(0, 2);
                button3.Text = matrizJogo[0, 2];
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                preenchimento(1, 0);
                button4.Text = matrizJogo[1, 0];
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                preenchimento(1, 1);
                button5.Text = matrizJogo[1, 1];
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
                preenchimento(1, 2);
                button6.Text = matrizJogo[1, 2];
            }
    
            private void button7_Click(object sender, EventArgs e)
            {
                preenchimento(2, 0);
                button7.Text = matrizJogo[2, 0];
            }
    
            private void button8_Click(object sender, EventArgs e)
            {
                preenchimento(2, 1);
                button8.Text = matrizJogo[2, 1];
            }
    
            private void button9_Click(object sender, EventArgs e)
            {
                preenchimento(2, 2);
                button9.Text = matrizJogo[2, 2];
            }
    
            public void preenchimento(int l, int c)
            {
                if (jogadorTime == 0 && matrizJogo[l, c] == "")
                {
                    matrizJogo[l, c] = "X";
                    jogadorTime = 1;
                    player2.ForeColor = Color.LimeGreen;
                    player1.ForeColor = Color.Red;
                }
                else if (jogadorTime == 1 && matrizJogo[l, c] == "")
                {
                    matrizJogo[l, c] = "O";
                    jogadorTime = 0;
                    player1.ForeColor = Color.LimeGreen;
                    player2.ForeColor = Color.Red;
                }
            }
    
    
         
        }
    }


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 4 de agosto de 2015 19:11
    Moderador
  • Olá SureSoul,

    Tudo bem?

    Seguem abaixo algumas dicas de como criar seu jogo:

    Tic Tac Toe in C#

    Tic Tac Toe Game in C#

    Espero ter ajudado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 4 de agosto de 2015 18:55

Todas as Respostas

  • Olá SureSoul,

    Tudo bem?

    Seguem abaixo algumas dicas de como criar seu jogo:

    Tic Tac Toe in C#

    Tic Tac Toe Game in C#

    Espero ter ajudado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 4 de agosto de 2015 18:55
  • Porque vc esta invertendo L e C aqui:

     public void preenchimento(int c, int l)

    e aqui 

     matrizJogo[l, c] 

    voce passa (2,1) mas na hora de associar a matriz vc faz (1,2)

    Mudei tambem a forma que vc incrementa o relogi.. creio que vc tenha feito do jeito anterior porque voce nao deve conhecer a formataçao de numeros.

    o codigo correto é 

    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;
    
    namespace Jogo_da_Velha
    {
        public partial class Form1 : Form
        {
            int min, seg, pont1, pont2, jogadorTime = 0;
            String[,] matrizJogo = new String[3, 3]{
                {"","",""}
                ,{"","",""}
                ,{"","",""}
            };
            bool startGame = false;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void start_Click(object sender, EventArgs e)
            {
                startGame = true;
                player1.ForeColor = Color.LimeGreen;
                player2.ForeColor = Color.Red;
                if (startGame)
                {
                    start.Enabled = false;
                    timer1.Start();
                }
    
                else
                {
                    start.Enabled = false;
                    timer1.Stop();
                    player2.ForeColor = Color.DarkGray;
                    player1.ForeColor = Color.DarkGray;
                }
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                seg++;
                if (seg > 60)
                {
                    seg = 0;
                    min++;
                }
                
                timer.Text = "" + min.ToString("00")+ ":" + seg.ToString("00");
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                preenchimento(0, 0);
                button1.Text = matrizJogo[0, 0];
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                preenchimento(0, 1);
                button2.Text = matrizJogo[0, 1];
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                preenchimento(0, 2);
                button3.Text = matrizJogo[0, 2];
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                preenchimento(1, 0);
                button4.Text = matrizJogo[1, 0];
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                preenchimento(1, 1);
                button5.Text = matrizJogo[1, 1];
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
                preenchimento(1, 2);
                button6.Text = matrizJogo[1, 2];
            }
    
            private void button7_Click(object sender, EventArgs e)
            {
                preenchimento(2, 0);
                button7.Text = matrizJogo[2, 0];
            }
    
            private void button8_Click(object sender, EventArgs e)
            {
                preenchimento(2, 1);
                button8.Text = matrizJogo[2, 1];
            }
    
            private void button9_Click(object sender, EventArgs e)
            {
                preenchimento(2, 2);
                button9.Text = matrizJogo[2, 2];
            }
    
            public void preenchimento(int l, int c)
            {
                if (jogadorTime == 0 && matrizJogo[l, c] == "")
                {
                    matrizJogo[l, c] = "X";
                    jogadorTime = 1;
                    player2.ForeColor = Color.LimeGreen;
                    player1.ForeColor = Color.Red;
                }
                else if (jogadorTime == 1 && matrizJogo[l, c] == "")
                {
                    matrizJogo[l, c] = "O";
                    jogadorTime = 0;
                    player1.ForeColor = Color.LimeGreen;
                    player2.ForeColor = Color.Red;
                }
            }
    
    
         
        }
    }


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 4 de agosto de 2015 19:11
    Moderador
  • Muito Obrigado!!!  :D
    sexta-feira, 7 de agosto de 2015 15:38
  • Funcionou!! Vlw William!!! Estou começando a usa o VS agora... Só que estou aprendendo a programar por conta própria faz uns anos... Mas agora estou fazendo curso de Programação de Jogos Digitais na ETEC, e não quero chegar na aula sem saber nada... então tô fuçando um pouco!! kkk Muito obrigado!!

    sexta-feira, 7 de agosto de 2015 15:43