Advertisement
mess0011

proj2

Apr 9th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication101
  8. {
  9.     class Connect4
  10.     {
  11.         private int[,] grid = new int[7, 7];
  12.         int round = 0;
  13.         int row;
  14.         int column;
  15.         int player;
  16.         int stone;
  17.         bool victory;
  18.  
  19.         //Array das angibt, ob Zahl und Feld stimmt (gefüllt mit 0, 1, 2)
  20.  
  21.  
  22.         private void connect4()
  23.         {
  24.             round++;
  25.             if (round == 1)
  26.             {
  27.                 Console.WriteLine("Rows and Columns are shown as a 7x7 grid (0-6)");
  28.                 Console.WriteLine("---------------------------\n");
  29.                 Console.WriteLine("---------------------------\n");
  30.  
  31.                 for (int i = 0; i < 7; i++)
  32.                 {
  33.                     for (int j = 0; j < 7; j++)
  34.                     {
  35.                         Console.WriteLine("{0}", grid[i, j]);
  36.                     }
  37.                 }
  38.                 this.victory = false;
  39.  
  40.             }
  41.             else
  42.             {
  43.                 for (int i = 0; i < 7; i++)
  44.                 {
  45.                     for (int j = 0; j < 7; j++)
  46.                     {
  47.                         Console.WriteLine("{0}", grid[i, j]);
  48.                     }
  49.                 }
  50.                 if (this.victory == false)
  51.                 {
  52.                     set_stone();
  53.                 }
  54.                 else
  55.                 {
  56.                     Console.WriteLine("Player {0} won", this.player);
  57.                 }
  58.             }
  59.         }
  60.  
  61.         private void set_stone()
  62.         {
  63.             if (round % 2 == 1)
  64.             {
  65.                 this.player = 1;
  66.                 this.stone = 1;
  67.             }
  68.             else
  69.             {
  70.                 this.player = 2;
  71.                 this.stone = 9;
  72.             }
  73.             Console.WriteLine("Player {0} your turn!", this.player);
  74.  
  75.             Console.WriteLine("row = ");
  76.             int row = Convert.ToInt32(Console.ReadLine());
  77.             this.row = row;
  78.  
  79.             Console.WriteLine("column = ");
  80.             int column = Convert.ToInt32(Console.ReadLine());
  81.             this.column = column;
  82.             Console.WriteLine();
  83.  
  84.             check();
  85.         }
  86.  
  87.         private void check()
  88.         {
  89.             if (this.row < 0 || this.row > 6 || this.column < 0 || this.column > 6)
  90.             {
  91.                 Console.WriteLine("Wrong Input! Please try again");
  92.                 set_stone();
  93.             }
  94.             if (this.grid[this.row, this.column] == 0)
  95.             {
  96.                 this.grid[row, column] = this.stone;
  97.                 win();
  98.                 connect4();
  99.                 return;
  100.             }
  101.             else
  102.             {
  103.                 Console.WriteLine("Spot is occupied!");
  104.                 set_stone();
  105.             }
  106.         }
  107.  
  108.         private void win()
  109.         {
  110.             int count = 0;
  111.             int t = 0; // top
  112.             int b = 0; //bot
  113.             int l = 0; // left
  114.             int r = 0; // right
  115.  
  116.             switch (this.row)
  117.             {
  118.                 case 0: t = 1; b = 4; break;
  119.                 case 1: t = 2; b = 4; break;
  120.                 case 2: t = 3; b = 4; break;
  121.                 case 6: b = 1; t = 4; break;
  122.                 case 5: b = 2; t = 4; break;
  123.                 case 4: b = 3; t = 4; break;
  124.                 default: t = 4; b = 4; break;
  125.             }
  126.  
  127.             switch (this.column)
  128.             {
  129.                 case 0: l = 1; r = 4; break;
  130.                 case 1: l = 2; r = 4; break;
  131.                 case 2: l = 3; r = 4; break;
  132.                 case 6: r = 1; l = 4; break;
  133.                 case 5: r = 2; l = 4; break;
  134.                 case 4: r = 3; l = 4; break;
  135.                 default: l = 4; r = 4; break;
  136.             }
  137.  
  138.             //towards top
  139.             count += counter(t, 0, -1, 0);
  140.  
  141.             //dowards bottom
  142.             count += counter(b, 0, 1, 0);
  143.  
  144.             if (count == 3)
  145.             {
  146.                 this.victory = true;
  147.                 return;
  148.             }
  149.             else { count = 0; }
  150.  
  151.  
  152.             //towards right
  153.             count += counter(0, r, 0, 1);
  154.  
  155.             //towards left
  156.             count += counter(0, l, 0, -1);
  157.  
  158.             if (count == 3)
  159.             {
  160.                 this.victory = true;
  161.                 return;
  162.             }
  163.             else { count = 0; }
  164.  
  165.  
  166.             //positve diagonal (right)
  167.             count += counter(t, r, -1, 1);
  168.  
  169.             //negative diagonal (left)
  170.             count += counter(b, l, 1, -1);
  171.  
  172.             if (count == 3)
  173.             {
  174.                 this.victory = true;
  175.                 return;
  176.             }
  177.             else { count = 0; }
  178.  
  179.  
  180.             //positve diagonal (left)
  181.             count += counter(t, l, -1, -1);
  182.  
  183.             //negative diagonal (right)
  184.             count += counter(b, r, 1, 1);
  185.  
  186.             if (count == 3)
  187.             {
  188.                 this.victory = true;
  189.                 return;
  190.             }
  191.             else { count = 0; }
  192.         }
  193.  
  194.         private int counter(int positionX, int positionY, int directionX, int directionY)
  195.         {
  196.             int kontrollstein;
  197.             int count = 0;
  198.             int i = 1;
  199.             int j = 0;
  200.             int position = 0;
  201.  
  202.             if (positionX == 0 || positionY == 0)
  203.             {
  204.                 if (positionX == 0) { position = positionY; }
  205.                 if (positionY == 0) { position = positionX; }
  206.  
  207.                 for (i = 1; i < position; i++)
  208.                 {
  209.                     kontrollstein = this.grid[this.row + i * directionX, this.column + i * directionY];
  210.                     if (kontrollstein == this.stone)
  211.                     {
  212.                         count++;
  213.                     }
  214.                     else
  215.                     {
  216.                         break;
  217.                     }
  218.                 }
  219.             }
  220.  
  221.             else
  222.             {
  223.                 for (i = 1; i < positionX; i++)
  224.                 {
  225.                     if (j < (positionY - 1)) { j++; }
  226.  
  227.                     kontrollstein = this.grid[this.row + i * directionX, this.column + j * directionY];
  228.                     if (kontrollstein == this.stone)
  229.                     {
  230.                         count++;
  231.                     }
  232.                     else
  233.                     {
  234.                         break;
  235.                     }
  236.                 }
  237.             }
  238.  
  239.  
  240.             return count;
  241.         }
  242.  
  243.  
  244.  
  245.         class MainClass
  246.         {
  247.             public static void Main(string[] args)
  248.             {
  249.                 Connect4 game = new Connect4();
  250.                 game.connect4();
  251.                 Console.ReadLine();
  252.  
  253.  
  254.             }
  255.         }
  256.     }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement