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;
namespace Štiri_v_vrsto
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//ali je na vrsti prvi igralec
private bool prvi = true;
//tabela tabel, inicializirana z ničlami
//polni se z enkami ali dvojkami
private int[][] tabela = new int[][]
{
new int[] {0,0,0,0,0,0,0},
new int[] {0,0,0,0,0,0,0},
new int[] {0,0,0,0,0,0,0},
new int[] {0,0,0,0,0,0,0},
new int[] {0,0,0,0,0,0,0},
new int[] {0,0,0,0,0,0,0}
};
private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.panel1.CreateGraphics();
//izris vseh praznih polj
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 6; j++)
{
g.FillEllipse(Brushes.White, i*panel1.Width/7, j*50, 50, 50);
}
}
}
private void panel2_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.panel2.CreateGraphics();
//izris mej polj, kjer se klika
for (int i = 1; i < 7; i++)
{
g.DrawLine(new Pen(Brushes.Black), new Point(i * panel1.Width / 7, panel2.Height), new Point(i * panel1.Width / 7, 0));
}
}
private void panel2_MouseClick(object sender, MouseEventArgs e)
{
Graphics g = this.panel1.CreateGraphics();
int sirina = e.Location.X / 50;
//polnjenje tabele in izris tabele v pobarvane kroge
//gre po stolpcih
for (int i = 0; i < 7; i++)
{
//če je stolpec že poln
if (tabela[tabela.Length - 1][sirina] != 0)
{
MessageBox.Show("Ne gre!");
break;
}
//če je stolpec še prezen
if (i == 0 && tabela[i][sirina] == 0)
{
//če je prvi igralec na vrsti
if (prvi)
{
//na ustrezno mesto v tabelo napolni z 1
tabela[0][sirina] = 1;
//izris
g.FillEllipse(Brushes.Yellow,sirina*50, 250, 50, 50);
besedilo.Text = "Na vrsti je drugi igralec";
prvi = false;
break;
}
//drugi igralec
else
{
tabela[0][sirina] = 2;
g.FillEllipse(Brushes.Red, sirina*50, 250, 50, 50);
besedilo.Text = "Na vrsti je prvi igralec";
prvi = true;
break;
}
}
//ko je prvi element enak 0, ga zamenja z 1 ali 2 in izriše krog
if (tabela[i][sirina] == 0)
{
if (prvi)
{
tabela[i][sirina] = 1;
g.FillEllipse(Brushes.Yellow, sirina * 50, 250 - i*50, 50, 50);
besedilo.Text = "Na vrsti je drugi igralec";
prvi = false;
break;
}
else
{
tabela[i][sirina] = 2;
g.FillEllipse(Brushes.Red, sirina * 50,250 - i * 50, 50, 50);
besedilo.Text = "Na vrsti je prvi igralec";
prvi = true;
break;
}
}
}
//preverjanje zmage po vrsticah
foreach (var item in tabela)
{
for (int i = 0; i < item.Length - 3; i++)
{
if (item[i] == item[i + 1] && item[i] == item[i + 2] && item[i] == item[i + 3] && item[i] != 0)
{
//končno okno
var result = MessageBox.Show("Zmagal si!\nNova igra?", "Konec igre", MessageBoxButtons.YesNo);
switch (result)
{
case DialogResult.Yes: // Če pritisne YES
Application.Restart();
break;
case DialogResult.No: // Če pritisne NO
Application.Exit();
break;
default: // Za vsak slučaj
MessageBox.Show("Nekaj pritisni!");
break;
}
}
}
}
//preverjanje zmage po stolpcih
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 3; j++)
{
if (tabela[j][i] == tabela[j + 1][i] && tabela[j][i] == tabela[j + 2][i] && tabela[j][i] == tabela[j + 3][i] && tabela[j][i] != 0)
{
//končno okno
var result = MessageBox.Show("Zmagal si!\nNova igra?", "Konec igre", MessageBoxButtons.YesNo);
switch (result)
{
case DialogResult.Yes: // Če pritisne YES
Application.Restart();
break;
case DialogResult.No: // Če pritisne NO
Application.Exit();
break;
default: // Za vsak slučaj
MessageBox.Show("Nekaj pritisni!");
break;
}
}
}
}
//preverjanje zmage po diagonali
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
if (tabela[i][j] == tabela[i + 1][j + 1] && tabela[i][j] == tabela[i + 2][j + 2] && tabela[i][j] == tabela[i + 3][j + 3] && tabela[i][j] != 0)
{
//končno okno
var result = MessageBox.Show("Zmagal si!\nNova igra?", "Konec igre", MessageBoxButtons.YesNo);
switch (result)
{
case DialogResult.Yes: // Če pritisne YES
Application.Restart();
break;
case DialogResult.No: // Če pritisne NO
Application.Exit();
break;
default: // Za vsak slučaj
MessageBox.Show("Nekaj pritisni!");
break;
}
}
}
}
//preverjanje zmage druga diagonala
for (int i = 0; i < 3; i++)
{
for (int j = 6; j > 2; j--)
{
if (tabela[i][j] == tabela[i + 1][j - 1] && tabela[i][j] == tabela[i + 2][j - 2] && tabela[i][j] == tabela[i + 3][j - 3] && tabela[i][j] != 0)
{
//končno okno
var result = MessageBox.Show("Zmagal si!\nNova igra?", "Konec igre", MessageBoxButtons.YesNo);
switch (result)
{
case DialogResult.Yes: // Če pritisne YES
Application.Restart();
break;
case DialogResult.No: // Če pritisne NO
Application.Exit();
break;
default: // Za vsak slučaj
MessageBox.Show("Nekaj pritisni!");
break;
}
}
}
}
}
}
}