Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication101
- {
- class Connect4
- {
- private int[,] grid = new int[7, 7];
- int round = 0;
- int row;
- int column;
- int player;
- int stone;
- bool victory;
- //Array das angibt, ob Zahl und Feld stimmt (gefüllt mit 0, 1, 2)
- private void connect4()
- {
- round++;
- if (round == 1)
- {
- Console.WriteLine("Rows and Columns are shown as a 7x7 grid (0-6)");
- Console.WriteLine("---------------------------\n");
- Console.WriteLine("---------------------------\n");
- for (int i = 0; i < 7; i++)
- {
- for (int j = 0; j < 7; j++)
- {
- Console.WriteLine("{0}", grid[i, j]);
- }
- }
- this.victory = false;
- }
- else
- {
- for (int i = 0; i < 7; i++)
- {
- for (int j = 0; j < 7; j++)
- {
- Console.WriteLine("{0}", grid[i, j]);
- }
- }
- if (this.victory == false)
- {
- set_stone();
- }
- else
- {
- Console.WriteLine("Player {0} won", this.player);
- }
- }
- }
- private void set_stone()
- {
- if (round % 2 == 1)
- {
- this.player = 1;
- this.stone = 1;
- }
- else
- {
- this.player = 2;
- this.stone = 9;
- }
- Console.WriteLine("Player {0} your turn!", this.player);
- Console.WriteLine("row = ");
- int row = Convert.ToInt32(Console.ReadLine());
- this.row = row;
- Console.WriteLine("column = ");
- int column = Convert.ToInt32(Console.ReadLine());
- this.column = column;
- Console.WriteLine();
- check();
- }
- private void check()
- {
- if (this.row < 0 || this.row > 6 || this.column < 0 || this.column > 6)
- {
- Console.WriteLine("Wrong Input! Please try again");
- set_stone();
- }
- if (this.grid[this.row, this.column] == 0)
- {
- this.grid[row, column] = this.stone;
- win();
- connect4();
- return;
- }
- else
- {
- Console.WriteLine("Spot is occupied!");
- set_stone();
- }
- }
- private void win()
- {
- int count = 0;
- int t = 0; // top
- int b = 0; //bot
- int l = 0; // left
- int r = 0; // right
- switch (this.row)
- {
- case 0: t = 1; b = 4; break;
- case 1: t = 2; b = 4; break;
- case 2: t = 3; b = 4; break;
- case 6: b = 1; t = 4; break;
- case 5: b = 2; t = 4; break;
- case 4: b = 3; t = 4; break;
- default: t = 4; b = 4; break;
- }
- switch (this.column)
- {
- case 0: l = 1; r = 4; break;
- case 1: l = 2; r = 4; break;
- case 2: l = 3; r = 4; break;
- case 6: r = 1; l = 4; break;
- case 5: r = 2; l = 4; break;
- case 4: r = 3; l = 4; break;
- default: l = 4; r = 4; break;
- }
- //towards top
- count += counter(t, 0, -1, 0);
- //dowards bottom
- count += counter(b, 0, 1, 0);
- if (count == 3)
- {
- this.victory = true;
- return;
- }
- else { count = 0; }
- //towards right
- count += counter(0, r, 0, 1);
- //towards left
- count += counter(0, l, 0, -1);
- if (count == 3)
- {
- this.victory = true;
- return;
- }
- else { count = 0; }
- //positve diagonal (right)
- count += counter(t, r, -1, 1);
- //negative diagonal (left)
- count += counter(b, l, 1, -1);
- if (count == 3)
- {
- this.victory = true;
- return;
- }
- else { count = 0; }
- //positve diagonal (left)
- count += counter(t, l, -1, -1);
- //negative diagonal (right)
- count += counter(b, r, 1, 1);
- if (count == 3)
- {
- this.victory = true;
- return;
- }
- else { count = 0; }
- }
- private int counter(int positionX, int positionY, int directionX, int directionY)
- {
- int kontrollstein;
- int count = 0;
- int i = 1;
- int j = 0;
- int position = 0;
- if (positionX == 0 || positionY == 0)
- {
- if (positionX == 0) { position = positionY; }
- if (positionY == 0) { position = positionX; }
- for (i = 1; i < position; i++)
- {
- kontrollstein = this.grid[this.row + i * directionX, this.column + i * directionY];
- if (kontrollstein == this.stone)
- {
- count++;
- }
- else
- {
- break;
- }
- }
- }
- else
- {
- for (i = 1; i < positionX; i++)
- {
- if (j < (positionY - 1)) { j++; }
- kontrollstein = this.grid[this.row + i * directionX, this.column + j * directionY];
- if (kontrollstein == this.stone)
- {
- count++;
- }
- else
- {
- break;
- }
- }
- }
- return count;
- }
- class MainClass
- {
- public static void Main(string[] args)
- {
- Connect4 game = new Connect4();
- game.connect4();
- Console.ReadLine();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement