Jump to content
Joao Ribeiro

Traduzir C# para python

Recommended Posts

Joao Ribeiro

Boas, tenho um ficheiro que fiz download da internet escrito em C#. Pago o valor que acharem justo se alguém me traduzir e explicar o código em python.

O Codigo é este:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Drawing;

using System.Drawing.Printing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace _4INROW

{

public partial class Form1 : Form

{

int ClickedColumn = 0;

int LinhaColorir = -1;

int[,] Matriz = new int[6, 7];

bool jogador = true;//0 (false) pc & 1(true) human

int CountJogadas = 0;

int ValueVertical = 1;

int ValueHorizontal = 1;

int ValueDiagonalOne = 1;

int ValueDiagonalTwo = 1;

int turn = 0;

List<int> celula = new List<int>();//lista das celulas onde pode jogar

public Form1()

{

InitializeComponent();

}

private void tabuleiro_MouseClick(object sender, MouseEventArgs e)

{

checkBox1.Enabled = false;

if (e.Button == MouseButtons.Left)

{

int row = 0;

int verticalOffset = 0;

foreach (int h in tabuleiro.GetRowHeights())

{

ClickedColumn = 0;

int horizontalOffset = 0;

foreach (int w in tabuleiro.GetColumnWidths())

{

Rectangle rectangle = new Rectangle(horizontalOffset, verticalOffset, w, h);

if (rectangle.Contains(e.Location))

{

//MessageBox.Show(row + "-" +ClickedColumn );

//onde roda o jogo

if (jogador == true)

{

turn = 1;//human

LinhaColorir = RowToColor(ClickedColumn);//celula a colorir

//MessageBox.Show(LinhaColorir.ToString());

Painter(LinhaColorir, ClickedColumn, jogador);

CountJogadas += 1;

if (CountJogadas >= 7)//>=7 porque só às 7 jogadas é que é possivel alguem ganhar

{

VitoryVerify();

}

jogador = !jogador;

}

turn = 0;

WhereCanPlay();//saber as celulas onde pode jogar

List<int> CelToPcPlay = CelToPlay();//vai retornar a casa (celula)

ClickedColumn = Prevision(CelToPcPlay);

LinhaColorir = PcLine(ClickedColumn);

Painter(LinhaColorir, ClickedColumn, jogador);

try { Matriz[LinhaColorir, ClickedColumn] = 0; } catch(Exception){}

CountJogadas += 1;

//MessageBox.Show(CountJogadas.ToString());

if (CountJogadas >= 7)//>=7 porque só às 7 jogadas é que é possivel alguem ganhar

{

//MessageBox.Show("Verificar se ganhou");

//MessageBox.Show(LinhaColorir+" "+ClickedColumn);

//MessageBox.Show(turn.ToString());

VitoryVerify();

}

jogador = !jogador;

//--------------------------------------função de ia e regras para o pc----------------------------

//jogador = !jogador; - depois este código é para tornar visível

//no final chama a função Painter outra vez

//jogador = !jogador;

return;

}

horizontalOffset += w;

ClickedColumn++;

}

verticalOffset += h;

row++;

}

//--daqui para cima

}

}

private int PcLine(int col)

{

int line = -1;

for (int i = 0; i <= 5; i++)

{

if (Matriz[i, col] == -10)

{

line = 5;

}

else

{

line = i - 1;

i = 6;//para sair e nao verificar mais

}

}

return line;

}

private void Form1_Load(object sender, EventArgs e)

{

Matriz[0, 0] = -10; Matriz[0, 1] = -10; Matriz[0, 2] = -10; Matriz[0, 3] = -10; Matriz[0, 4] = -10; Matriz[0, 5] = -10; Matriz[0, 6] = -10;

Matriz[1, 0] = -10; Matriz[1, 1] = -10; Matriz[1, 2] = -10; Matriz[1, 3] = -10; Matriz[1, 4] = -10; Matriz[1, 5] = -10; Matriz[1, 6] = -10;

Matriz[2, 0] = -10; Matriz[2, 1] = -10; Matriz[2, 2] = -10; Matriz[2, 3] = -10; Matriz[2, 4] = -10; Matriz[2, 5] = -10; Matriz[2, 6] = -10;

Matriz[3, 0] = -10; Matriz[3, 1] = -10; Matriz[3, 2] = -10; Matriz[3, 3] = -10; Matriz[3, 4] = -10; Matriz[3, 5] = -10; Matriz[3, 6] = -10;

Matriz[4, 0] = -10; Matriz[4, 1] = -10; Matriz[4, 2] = -10; Matriz[4, 3] = -10; Matriz[4, 4] = -10; Matriz[4, 5] = -10; Matriz[4, 6] = -10;

Matriz[5, 0] = -10; Matriz[5, 1] = -10; Matriz[5, 2] = -10; Matriz[5, 3] = -10; Matriz[5, 4] = -10; Matriz[5, 5] = -10; Matriz[5, 6] = -10;

}

private int RowToColor(int column)

{

int row = -1, i;//para começar na maior linha

for (i = 5; i >= 0; i--)

{

if (Matriz[i, column] == -10)

{

row = i;

Matriz[i, column] = 1;//já ocupado com o pc(0) ou humano(1)//human

//condição anterior depois é para retirar pois o pc vai jogar de outro modo

i = -1;//para sair do ciclo

}

}

return row;

}

private void Painter(int row, int coluna,bool player)

{

PictureBox p = new PictureBox();

//MessageBox.Show("turno: "+turn+" player: "+jogador);

if (player == false)

{

p.BackgroundImage = _4INROW.Properties.Resources.blue_circle;//pc

}

else

{

p.BackgroundImage = _4INROW.Properties.Resources.red_circle1;//human

}

if (row != -1)

{

p.Dock = DockStyle.Fill;// propriedade de ajuste á celula

p.BackgroundImageLayout = ImageLayout.Stretch;

p.Margin = new System.Windows.Forms.Padding(0);

tabuleiro.Controls.Add(p, coluna, row);

}

}

private void WhereCanPlay()

{

//saber onde pode jogar

celula.Clear();

int linha = -1;//valor inexistente

for (int c = 0; c <= 6; c++)

{

for (int l = 0; l <= 5; l++)

{

if (Matriz[l, c] == -10)

{

linha = 5;

}

else

{

linha = l - 1;

l = 6;//para sair e nao verificar mais

}

}

celula.Add(linha);//insere as linhas por ordem de colunas

}

//fim do saber onde pode jogar

//foreach (int v in celula)

//{

// MessageBox.Show(v.ToString());

//}

}

private void VitoryVerify()

{

//MessageBox.Show(turn.ToString());

try

{

//--vertical catch----------------------------

if (LinhaColorir != 5 && Matriz[LinhaColorir + 1, ClickedColumn] == turn)

{

//MessageBox.Show("I");

ValueVertical += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir + i, ClickedColumn] == turn)

{

ValueVertical += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueVertical.ToString() + " I");

}

//--end of vertical catch----------------------------

//--horizontal catch----------------------------

if (ClickedColumn != 6 && Matriz[LinhaColorir, ClickedColumn + 1] == turn)

{

//MessageBox.Show("D");

ValueHorizontal += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir, ClickedColumn + i] == turn)

{

ValueHorizontal += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueHorizontal.ToString() + " D");

}

if (ClickedColumn != 0 && Matriz[LinhaColorir, ClickedColumn - 1] == turn)

{

//MessageBox.Show("E");

ValueHorizontal += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir, ClickedColumn - i] == turn)

{

ValueHorizontal += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueHorizontal.ToString() + " E");

}

//--end of horizontal catch----------------------

//--diagonal 1 catch = SD/IE---------------------

if (ClickedColumn != 6 && LinhaColorir != 0 && Matriz[LinhaColorir - 1, ClickedColumn + 1] == turn)

{

//MessageBox.Show("SD");

ValueDiagonalOne += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir - i, ClickedColumn + i] == turn)

{

ValueDiagonalOne += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueDiagonalOne.ToString() + " SD");

}

if (ClickedColumn != 0 && LinhaColorir != 5 && Matriz[LinhaColorir + 1, ClickedColumn - 1] == turn)

{

//MessageBox.Show("IE");

ValueDiagonalOne += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir + i, ClickedColumn - i] == turn)

{

ValueDiagonalOne += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueDiagonalOne.ToString() + " IE");

}

//--end of diagonal 1 catch = SD/IE----------------

//--diagonal 2 catch = SE/ID----------------

if (ClickedColumn != 6 && LinhaColorir != 5 && Matriz[LinhaColorir + 1, ClickedColumn + 1] == turn)

{

//MessageBox.Show("ID");

ValueDiagonalTwo += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir + i, ClickedColumn + i] == turn)

{

ValueDiagonalTwo += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueDiagonalTwo.ToString() + " ID");

}

if (ClickedColumn != 0 && LinhaColorir != 0 && Matriz[LinhaColorir - 1, ClickedColumn - 1] == turn)

{

//MessageBox.Show("SE");

ValueDiagonalTwo += 1;

try

{

for (int i = 2; i <= 3; i++)//como o value ja é 2, para quatro so precisa de mais 2

{

if (Matriz[LinhaColorir - i, ClickedColumn - i] == turn)

{

ValueDiagonalTwo += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(ValueDiagonalTwo.ToString() + " SE");

}

//--end of diagonal 2 catch = SD/IE----------------

}

catch (Exception) { /*MessageBox.Show(sms.Message + "\nJogada impossível.");*/ }

string pl;

if (jogador == true)

{

pl = "You";

}

else { pl = "The computer"; }

//Verificações de vitoria

if (ValueHorizontal >= 4)

{

MessageBox.Show(pl + " win in horizontal position");

MessageBox.Show("The Game will Restart");

System.Diagnostics.Process.Start(Application.ExecutablePath); // to start new instance of application

Application.ExitThread();

}

else if (ValueVertical >= 4)

{

MessageBox.Show(pl + " win in vertical position");

MessageBox.Show("The Game will Restart");

System.Diagnostics.Process.Start(Application.ExecutablePath); // to start new instance of application

Application.ExitThread();

}

else if (ValueDiagonalOne >= 4)

{

MessageBox.Show(pl + " win in diagonal[1] position");

MessageBox.Show("The Game will Restart");

System.Diagnostics.Process.Start(Application.ExecutablePath); // to start new instance of application

Application.ExitThread();

}

else if (ValueDiagonalTwo >= 4)

{

MessageBox.Show(pl + " win in diagonal[2] position");

MessageBox.Show("The Game will Restart");

System.Diagnostics.Process.Start(Application.ExecutablePath); // to start new instance of application

Application.ExitThread();

}

else if (CountJogadas == 42 && ValueVertical < 4 && ValueDiagonalOne < 4 && ValueDiagonalTwo < 4 && ValueHorizontal < 4)

{

MessageBox.Show("Draw game");

MessageBox.Show("The Game will Restart");

System.Diagnostics.Process.Start(Application.ExecutablePath); // to start new instance of application

Application.ExitThread();

}

else //reset aos valores(contadores) para valores iniciais caso nao tenha ganho

{

ValueVertical = 1;

ValueHorizontal = 1;

ValueDiagonalOne = 1;

ValueDiagonalTwo = 1;

}

}

//--------------------------------------------MAGIC (AI) -------------------------------------------

public List<int> CelToPlay()

{

//no block verificar se é igual em SE e SD e IE e ID [?]

List<int> ValuesToCalc = new List<int>();

//Bloquear adversário nos 7 pontos vizinhos de cada celula/onde pode jogar para fazer jogo

//Vertical------------------------------------------------------------------------------

for (int k = 0; k <= 6; k++)

{

if (celula[k] != -1)

{

Celula ct = new Celula();

int valor = 0;

int PCValueVerticalToBlock = 0;

int PCValueVerticalToPlay = 0;

int PCValueLeftToBlock = 0;

int PCValueLeftToPlay = 0;

int PCValueRightToBlock = 0;

int PCValueRightToPlay = 0;

int PCValueDiagonalSDToBlock = 0;

int PCValueDiagonalSDToPlay = 0;

int PCValueDiagonalIEToBlock = 0;

int PCValueDiagonalIEToPlay = 0;

int PCValueDiagonalSEToBlock = 0;

int PCValueDiagonalSEToPlay = 0;

int PCValueDiagonalIDToBlock = 0;

int PCValueDiagonalIDToPlay = 0;

if (celula[k] != 5 && Matriz[celula[k] + 1, k] != turn)

{

//MessageBox.Show("PC-I " + k);

PCValueVerticalToBlock += 1;

try

{

for (int i = 2; i <= 3; i++)

{

if (Matriz[celula[k] + i, k] != turn)

{

PCValueVerticalToBlock += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(k + " Bloqueia " + PCValueVerticalToBlock + " pecas na vertical");

}

if (celula[k] != 5 && Matriz[celula[k] + 1, k] == turn)

{

//MessageBox.Show("(MG)PC-I " + k);

PCValueVerticalToPlay += 1;

try

{

for (int i = 2; i <= 3; i++)

{

if (Matriz[celula[k] + i, k] == turn)

{

PCValueVerticalToPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show(k + " Faz jogo " + PCValueVerticalToPlay + " pecas na vertical");

}

//fim do vertical-------------------------------------------------------------------

//--horizontal catch----------------------------

//direita

if (k != 6 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-D "+k);

//PCValueHorizontal += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k], k + i] == turn)

{

i = 4;

}

else if (Matriz[celula[k], k + i] != turn && Matriz[celula[k], k + i] != -10)//-10=vazia

{

PCValueRightToBlock += 1;

}

//if()

//{

//}

//else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("PC-D " + k);

//MessageBox.Show(k + " Bloqueia " + PCValueRightToBlock + " pecas na direita");

}

if (k != 6 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-D "+k);

//PCValueHorizontal += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k], k + i] == turn && Matriz[celula[k], k + i] != -10)//-10=vazia

{

PCValueRightToPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("(MG)PC-D " + k);

//MessageBox.Show(k + " Faz jogo " + PCValueRightToPlay + " pecas na direita");

}

//esq

if (k != 0 && Matriz[celula[k], k] == -10)//-10=vazia

{

//MessageBox.Show("PC-E "+k);

//PCValueHorizontal += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k], k - i] == turn)

{

i = 4;

}

else if (Matriz[celula[k], k - i] != turn && Matriz[celula[k], k - i] != -10)

{

PCValueLeftToBlock += 1;

}

//else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("PC-E " + k);

//MessageBox.Show(k + " Bloqueia " + PCValueLeftToBlock + " pecas na esquerda");

}

if (k != 0 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-E "+k);

//PCValueHorizontal += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k], k - i] == turn && Matriz[celula[k], k - i] != -10)

{

PCValueLeftToPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("(MG)PC-E " + k);

//MessageBox.Show(k + " Faz jogo " + PCValueLeftToPlay + " pecas na esquerda");

}

//--end of horizontal catch----------------------

//DAIGONAL

//--diagonal 1 catch = SD/IE---------------------

//sd

if (k != 6 && celula[k] != 0 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-SD "+k);

//PCValueDiagonalOne += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - i, k + i]==turn)

{

i = 4;

}

else if (Matriz[celula[k] - i, k + i] != turn && Matriz[celula[k] - i, k + i] != -10)

{

PCValueDiagonalSDToBlock += 1;

}

//else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("PC-SD " + k);

//MessageBox.Show(k + " Bloqueia " + PCValueDiagonalSDToBlock + " pecas na SD");

}

if (k != 6 && celula[k] != 0 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-SD "+k);

//PCValueDiagonalOne += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - i, k + i] == turn && Matriz[celula[k] - i, k + i] != -10)

{

PCValueDiagonalSDToPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("(MG)PC-SD " + k);

//MessageBox.Show(k + " Faz jogo " + PCValueDiagonalSDToPlay + " pecas na SD");

}

//ie

if (k != 0 && celula[k] != 5 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-IE " +k);

//PCValueDiagonalOne += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] + i, k - i] == turn)

{

i = 4;

}

else if (Matriz[celula[k] + i, k - i] != turn && Matriz[celula[k] + i, k - i] != -10)

{

PCValueDiagonalIEToBlock += 1;

}

//else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("PC-IE " + k);

//MessageBox.Show(k + " Bloqueia " + PCValueDiagonalIEToBlock + " peças no IE");

}

if (k != 0 && celula[k] != 5 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("PC-IE " +k);

//PCValueDiagonalOne += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] + i, k - i] == turn)

{

PCValueDiagonalIEToPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

//MessageBox.Show("(MG)PC-IE " + k);

//MessageBox.Show(k + " Faz jogo " + PCValueDiagonalIEToPlay + " peças no IE");

}

//--end of diagonal 1 catch = SD/IE----------------

//--diagonal 2 catch = SE/ID----------------

//id

if (k != 6 && celula[k] != 5 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("ID");

//ValueDiagonalTwo += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] + i, k + i] == turn)

{

i = 4;

}

else if (Matriz[celula[k] + i, k + i] != turn && Matriz[celula[k] + i, k + i] != -10)

{

PCValueDiagonalIDToBlock += 1;

}

//else i = 4;//para sair do ciclo

}

//MessageBox.Show("PC-ID " + k);

}

catch (Exception) { }

//MessageBox.Show(k + " Bloqueia " + PCValueDiagonalIDToBlock + " peças no ID");

}

if (k != 6 && celula[k] != 5 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("ID");

//ValueDiagonalTwo += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] + i, k + i] == turn)

{

PCValueDiagonalIDToPlay += 1;

}

else i = 4;//para sair do ciclo

}

//MessageBox.Show("(MG)PC-ID " + k);

}

catch (Exception) { }

//MessageBox.Show(k + " Faz jogo " + PCValueDiagonalIDToPlay + " peças no ID");

}

//se

if (k != 0 && celula[k] != 0 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("SE");

//ValueDiagonalTwo += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - i, k - i] == turn)

{

i = 4;

}

else if (Matriz[celula[k] - i, k - i] != turn && Matriz[celula[k] - i, k - i] != -10)

{

PCValueDiagonalSEToBlock += 1;

}

//else i = 4;//para sair do ciclo

}

//MessageBox.Show("PC-SE " + k);

}

catch (Exception) { }

//MessageBox.Show(k + " Bloqueia " + PCValueDiagonalSEToBlock + " peças no SE");

}

if (k != 0 && celula[k] != 0 && Matriz[celula[k], k] == -10)

{

//MessageBox.Show("SE");

//ValueDiagonalTwo += 1;

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - i, k - i] == turn)

{

PCValueDiagonalSEToPlay += 1;

}

else i = 4;//para sair do ciclo

}

//MessageBox.Show("(MG)PC-SE " + k);

}

catch (Exception) { }

//MessageBox.Show(k + " Faz jogo " + PCValueDiagonalSEToPlay + " peças no SE");

}

//--end of diagonal 2 catch = SE/ID----------------

List<int> ListOfValuesToBlock = new List<int>();

List<int> ListOfValuesToPlay = new List<int>();

int Diagonal1_toPlay = PCValueDiagonalSDToPlay + PCValueDiagonalIEToPlay;

int Diagonal2_toPlay = PCValueDiagonalSEToPlay + PCValueDiagonalIDToPlay;

int Horizontal_toPlay = PCValueLeftToPlay + PCValueRightToPlay;

int Vertical_toPlay = PCValueVerticalToPlay;

int Diagonal1_toBlock = PCValueDiagonalSDToBlock + PCValueDiagonalIEToBlock;

int Diagonal2_toBlock = PCValueDiagonalSEToBlock + PCValueDiagonalIDToBlock;

int Horizontal_toBlock = PCValueLeftToBlock + PCValueRightToBlock;

int Vertical_toBlock = PCValueVerticalToBlock;

valor = ct.ValueBlock(Diagonal1_toBlock, Diagonal2_toBlock,

Horizontal_toBlock, Vertical_toBlock,CountJogadas);

valor += ct.ValuePlay(Diagonal1_toPlay, Diagonal2_toPlay, Horizontal_toPlay,

Vertical_toPlay);

//ListOfValuesToBlock.Add(Diagonal1_toBlock);

//ListOfValuesToBlock.Add(Diagonal2_toBlock);

//ListOfValuesToBlock.Add(Horizontal_toBlock);

//ListOfValuesToBlock.Add(Vertical_toBlock);

//ListOfValuesToPlay.Add(Diagonal1_toPlay);

//ListOfValuesToPlay.Add(Diagonal2_toPlay);

//ListOfValuesToPlay.Add(Horizontal_toPlay);

//ListOfValuesToPlay.Add(Vertical_toPlay);

/*valor da o valor de bloqueio + jogo de cada celula*/

//valor = ct.CalcValueCel(ListOfValuesToBlock, ListOfValuesToPlay);

ValuesToCalc.Add(valor);

/*para na funçao prevision nao analisar estes casos pois significa que a coluna esta completa*/

}

else { ValuesToCalc.Add(-1); };

}

//foreach (int a in ValuesToCalc)

//{

// MessageBox.Show(a.ToString());

//}

return ValuesToCalc;//valor para a prevision

}

public int Prevision(List<int> list)

{

int EndValue = 0;

int max = int.MinValue;

for (int k = 0; k <= 6; k++)

{

//MessageBox.Show("celula: "+k+" "+list[k].ToString());

int ValueDir = 0; int ValueDirPlay = 0;

int ValueEsq = 0; int ValueEsqPlay = 0;

int ValueId = 0; int ValueIdPlay = 0;

int ValueIe = 0; int ValueIePlay = 0;

int ValueSd = 0; int ValueSdPlay = 0;

int ValueSe = 0; int ValueSePlay = 0;

int Diagonal1 = 0;//ie+sd

int Diagonal2 = 0;//id+se

int Horizontal = 0;//e+d

if (list[k] != -1)//-1 significa coluna completa

{

//celula de k é a linha

//celula vazia = -10

//if (celula[k] != 0)//primeira linha - Matriz[celula[k]-1,k] é sempre igual a -10

//{

//direita

if (k != 6)

{

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1, k + i] != turn && Matriz[celula[k] - 1, k + i] != -10)

{

//MessageBox.Show("faz jogo acima à direita, cel " + k);

ValueDir += 1;

}

//else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1, k + i] == turn && Matriz[celula[k] - 1, k + i] != -10)

{

//MessageBox.Show("faz jogo acima à direita, cel " + k);

ValueDirPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

}

//fim do direita

//esquerda

if (k != 0)

{

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1, k - i] != turn && Matriz[celula[k] - 1, k - i] != -10)

{

//MessageBox.Show("faz jogo acima à esquerda, cel " + k);

ValueEsq += 1;

}

//else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1, k - i] == turn && Matriz[celula[k] - 1, k - i] != -10)

{

//MessageBox.Show("faz jogo acima à esquerda, cel " + k);

ValueEsqPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

}

//SD-IE

//SD

if (k != 6 && celula[k] > 1)

{

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 - i, k + i] != turn && Matriz[celula[k] - 1 - i, k + i] != -10)

{

//MessageBox.Show("faz jogo acima na SD, cel " + k);

ValueSd += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 - i, k + i] == turn && Matriz[celula[k] - 1 - i, k + i] != -10)

{

//MessageBox.Show("faz jogo acima na SD, cel " + k);

ValueSdPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

}

//IE

if (k != 0 && celula[k] != 0 )

{

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 + i, k - i] != turn && Matriz[celula[k] - 1 + i, k - i] != -10)

{

//MessageBox.Show("faz jogo acima na IE, cel " + k);

ValueIe += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 + i, k - i] == turn && Matriz[celula[k] - 1 + i, k - i] != -10)

{

//MessageBox.Show("faz jogo acima na IE, cel " + k);

ValueIePlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

}

//fim do SD-IE

//ID-SE

//ID

if (k != 6 && celula[k] != 0)

{

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 + i, k + i] != turn && Matriz[celula[k] - 1 + i, k + i] != -10)

{

//MessageBox.Show("faz jogo acima na ID, cel " + k);

ValueId += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 + i, k + i] == turn && Matriz[celula[k] - 1 + i, k + i] != -10)

{

//MessageBox.Show("faz jogo acima na ID, cel " + k);

ValueIdPlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

}

//SE

if (k != 0 && celula[k] > 1)

{

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 - i, k - i] != turn && Matriz[celula[k] - 1 - i, k - i] != -10)

{

//MessageBox.Show("faz jogo acima na SE, cel " + k);

ValueSe += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

try

{

for (int i = 1; i <= 3; i++)

{

if (Matriz[celula[k] - 1 - i, k - i] == turn && Matriz[celula[k] - 1 - i, k - i] != -10)

{

//MessageBox.Show("faz jogo acima na SE, cel " + k);

ValueSePlay += 1;

}

else i = 4;//para sair do ciclo

}

}

catch (Exception) { }

}

Diagonal1 = ValueIe + ValueSd;

Diagonal2 = ValueId + ValueSe;

Horizontal = ValueEsq + ValueDir;

//MessageBox.Show("[diagonal1 IeSd: " + Diagonal1 + " diagonal2IdSe: " + Diagonal2 + " horizontal: " + Horizontal + "] celula:" + k);

Celula cel = new Celula();//so quero que o valor de bloquear diagonais seja grande inicialmente. +1porque a jogada referente ao pc é incrementada apos esta funçao

//MessageBox.Show(CountJogadas.ToString());

//cel.turno = CountJogadas;

//vai retornar o valor ja com os valores subtraidos:

int FirstValueBlock = cel.FinalBlock(Diagonal1, Diagonal2, Horizontal);

//para saber se o pc faz jogo

Diagonal1 = ValueIePlay + ValueSdPlay;

Diagonal2 = ValueIdPlay + ValueSePlay;

Horizontal = ValueEsqPlay + ValueDirPlay;

int FirstValuePlay = cel.FinalPlay(Diagonal1, Diagonal2, Horizontal);

//agora ficamos com o maior valor de list[k]-value

//MessageBox.Show("Celula: " + k + ", valor: " + FirstValueBlock);

//MessageBox.Show(FirstValuePlay.ToString());

int SecondValue = list[k] + FirstValueBlock + FirstValuePlay;

//MessageBox.Show("Celula: " + k + ", valor: " + list[k]+FirstValueBlock);

/*->*/ //MessageBox.Show("Celula: " + k + ", valor: " + SecondValue.ToString());

if (SecondValue > max)

{

max = SecondValue;

EndValue = k;

//MessageBox.Show("Max: " + max + " celula: " + k);

}

else if (CountJogadas==1 || CountJogadas==0)

{

EndValue = 3;//celula 3 no inicio

}

//}//ciclo do celula[k]!=0

}//fim do if do -1

}

//MessageBox.Show("joga na celula: "+EndValue.ToString());

return EndValue;

}

//------------------------------------------END OF MAGIC HERE --------------------------------------

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

jogador = false;

checkBox1.Enabled = false;

}

private void button1_Click(object sender, EventArgs e)

{

button1.Enabled = false;

tabuleiro.Enabled = true;

checkBox1.Enabled = false;

//if (checkBox1.Checked == true)

//{

//}

}

private void tableLayoutPanel2_Paint(object sender, PaintEventArgs e)

{

}

}

}

Share this post


Link to post
Share on other sites
HappyHippyHippo

vamos ver quanto tempo leva a este tópico a ficar bloqueado ...

ainda por cima aparece na secção completamente errada ...


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.