Advertisement
Razhagal

FallingRocks

Mar 17th, 2014
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.86 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4.  
  5. struct Object
  6. {
  7.     public int x;
  8.     public int y;
  9.     public char c;
  10.     public ConsoleColor color;
  11. }
  12. class FallingRocks
  13. {
  14.    
  15.     static void PrintOnPosition(int x, int y, char c, ConsoleColor color = ConsoleColor.White)
  16.     {
  17.         Console.SetCursorPosition(x, y);
  18.         Console.ForegroundColor = color;
  19.         Console.Write(c);
  20.     }
  21.     static void PrintStringOnPosition(int x, int y, string str, ConsoleColor color = ConsoleColor.Gray)
  22.     {
  23.         Console.SetCursorPosition(x, y);
  24.         Console.ForegroundColor = color;
  25.         Console.Write(str);
  26.     }
  27.     static void Main()
  28.     {
  29.         Console.BufferHeight = Console.WindowHeight = 20;
  30.         Console.BufferWidth = Console.WindowWidth = 50;
  31.  
  32.  
  33.         int playField = 25;
  34.         int livesCount = 5;
  35.         int score = 0;
  36.         int chance;
  37.         int rockTypes = 12;
  38.  
  39.         Object body = new Object();
  40.         body.x = 12;
  41.         body.y = Console.WindowHeight - 1;
  42.         body.c = 'O';
  43.         body.color = ConsoleColor.Gray;
  44.  
  45.         Object leftHand = new Object();
  46.         leftHand.x = 11;
  47.         leftHand.y = Console.WindowHeight - 1;
  48.         leftHand.c = '(';
  49.         leftHand.color = ConsoleColor.Gray;
  50.  
  51.         Object rightHand = new Object();
  52.         rightHand.x = 13;
  53.         rightHand.y = Console.WindowHeight - 1;
  54.         rightHand.c = ')';
  55.         rightHand.color = ConsoleColor.Gray;
  56.  
  57.         Random rockDispenser = new Random();
  58.         List<Object> rocks = new List<Object>();
  59.  
  60.         Console.WriteLine("Welcome to Falling Rocks!");
  61.         Console.WriteLine();
  62.         Console.WriteLine("You are a dwarf \"(O)\" climbing a mountain but from the top of it a rock slide is heading your way!");
  63.         Console.WriteLine(@"Your job is to avoid getting hit by any of the
  64. falling rocks.");
  65.         Console.WriteLine(@"But everyone knows that despite being short,
  66. dwarfs are very strong and have incredibly tough
  67. bodies. " +
  68.         @"You are able to suffer only 5 hits before finally getting swept away with the rest of the
  69. rocks.");
  70.         Console.WriteLine("Good luck!");
  71.         Console.WriteLine();
  72.         Console.WriteLine("Press [enter] to begin.");
  73.         Console.ReadLine();
  74.  
  75.         while (true)
  76.         {
  77.             bool collision = false;
  78.  
  79.             Object rock = new Object();
  80.             chance = rockDispenser.Next(1, rockTypes + 1);
  81.             switch (chance)
  82.             {
  83.                 case 1:
  84.                     rock.x = rockDispenser.Next(0, playField + 1);
  85.                     rock.y = 0;
  86.                     rock.c = '^';
  87.                     rock.color = ConsoleColor.Blue;
  88.                     rocks.Add(rock);
  89.                     break;
  90.                 case 2:
  91.                     rock.x = rockDispenser.Next(0, playField + 1);
  92.                     rock.y = 0;
  93.                     rock.c = '@';
  94.                     rock.color = ConsoleColor.Gray;
  95.                     rocks.Add(rock);
  96.                     break;
  97.                 case 3:
  98.                     rock.x = rockDispenser.Next(0, playField + 1);
  99.                     rock.y = 0;
  100.                     rock.c = '*';
  101.                     rock.color = ConsoleColor.Cyan;
  102.                     rocks.Add(rock);
  103.                     break;
  104.                 case 4:
  105.                     rock.x = rockDispenser.Next(0, playField + 1);
  106.                     rock.y = 0;
  107.                     rock.c = '&';
  108.                     rock.color = ConsoleColor.Yellow;
  109.                     rocks.Add(rock);
  110.                     break;
  111.                 case 5:
  112.                     rock.x = rockDispenser.Next(0, playField + 1);
  113.                     rock.y = 0;
  114.                     rock.c = '+';
  115.                     rock.color = ConsoleColor.Cyan;
  116.                     rocks.Add(rock);
  117.                     break;
  118.                 case 6:
  119.                     rock.x = rockDispenser.Next(0, playField + 1);
  120.                     rock.y = 0;
  121.                     rock.c = '%';
  122.                     rock.color = ConsoleColor.Green;
  123.                     rocks.Add(rock);
  124.                     break;
  125.                 case 7:
  126.                     rock.x = rockDispenser.Next(0, playField + 1);
  127.                     rock.y = 0;
  128.                     rock.c = '$';
  129.                     rock.color = ConsoleColor.Red;
  130.                     rocks.Add(rock);
  131.                     break;
  132.                 case 8:
  133.                     rock.x = rockDispenser.Next(0, playField + 1);
  134.                     rock.y = 0;
  135.                     rock.c = '#';
  136.                     rock.color = ConsoleColor.DarkYellow;
  137.                     rocks.Add(rock);
  138.                     break;
  139.                 case 9:
  140.                     rock.x = rockDispenser.Next(0, playField + 1);
  141.                     rock.y = 0;
  142.                     rock.c = '!';
  143.                     rock.color = ConsoleColor.DarkRed;
  144.                     rocks.Add(rock);
  145.                     break;
  146.                 case 10:
  147.                     rock.x = rockDispenser.Next(0, playField + 1);
  148.                     rock.y = 0;
  149.                     rock.c = '.';
  150.                     rock.color = ConsoleColor.White;
  151.                     rocks.Add(rock);
  152.                     break;
  153.                 case 11:
  154.                     rock.x = rockDispenser.Next(0, playField + 1);
  155.                     rock.y = 0;
  156.                     rock.c = ';';
  157.                     rock.color = ConsoleColor.Magenta;
  158.                     rocks.Add(rock);
  159.                     break;
  160.                 case 12:
  161.                     rock.x = rockDispenser.Next(0, playField + 1);
  162.                     rock.y = 0;
  163.                     rock.c = '-';
  164.                     rock.color = ConsoleColor.White;
  165.                     rocks.Add(rock);
  166.                     break;
  167.                 default:
  168.                     break;
  169.             }
  170.  
  171.             while (Console.KeyAvailable)
  172.             {
  173.                 ConsoleKeyInfo pressedKey = Console.ReadKey();
  174.  
  175.                 if (pressedKey.Key == ConsoleKey.LeftArrow)
  176.                 {
  177.                     if (leftHand.x - 1 >= 0)
  178.                     {
  179.                         leftHand.x -= 1;
  180.                         body.x -= 1;
  181.                         rightHand.x -= 1;
  182.                     }
  183.                 }
  184.                 else if (pressedKey.Key == ConsoleKey.RightArrow)
  185.                 {
  186.                     if (rightHand.x + 1 <= playField)
  187.                     {
  188.                         leftHand.x += 1;
  189.                         body.x += 1;
  190.                         rightHand.x += 1;
  191.                     }
  192.                 }
  193.             }
  194.  
  195.             List<Object> newRocks = new List<Object>();
  196.  
  197.             for (int i = 0; i < rocks.Count; i++)
  198.             {
  199.                 Object oldRock = rocks[i];
  200.                 Object newRock = new Object();
  201.                 newRock.x = oldRock.x;
  202.                 newRock.y = oldRock.y + 1;
  203.                 newRock.c = oldRock.c;
  204.                 newRock.color = oldRock.color;
  205.  
  206.                 if ((newRock.x == leftHand.x || newRock.x == body.x || newRock.x == rightHand.x) &&
  207.                     newRock.y == body.y)
  208.                 {
  209.                     livesCount--;
  210.                     collision = true;
  211.  
  212.                     if (livesCount <= 0)
  213.                     {
  214.                         //Console.Clear(); //If you want clear end-game screen
  215.  
  216.                         PrintStringOnPosition(15, 8, "GAME OVER!", ConsoleColor.Red);
  217.                         PrintStringOnPosition(13, 10, "Your score is " + score, ConsoleColor.White);
  218.                         PrintStringOnPosition(11, 11, "Press [enter] to exit.", ConsoleColor.White);
  219.                         Console.ReadLine();
  220.                         Environment.Exit(0);
  221.                     }
  222.                 }
  223.  
  224.                 if (newRock.y < Console.WindowHeight)
  225.                 {
  226.                     newRocks.Add(newRock);
  227.                 }
  228.             }
  229.  
  230.             rocks = newRocks;
  231.             Console.Clear();
  232.  
  233.             if (collision)
  234.             {
  235.                 //rocks.Clear(); //clears the rocks if you get hit
  236.  
  237.                 PrintOnPosition(leftHand.x, leftHand.y, 'X', ConsoleColor.Red);
  238.                 PrintOnPosition(body.x, body.y, 'X', ConsoleColor.Red);
  239.                 PrintOnPosition(rightHand.x, rightHand.y, 'X', ConsoleColor.Red);
  240.             }
  241.             else
  242.             {
  243.                 PrintOnPosition(leftHand.x, leftHand.y, leftHand.c, leftHand.color);
  244.                 PrintOnPosition(body.x, body.y, body.c, body.color);
  245.                 PrintOnPosition(rightHand.x, rightHand.y, rightHand.c, rightHand.color);
  246.             }
  247.  
  248.             foreach (Object stone in rocks)
  249.             {
  250.                 PrintOnPosition(stone.x, stone.y, stone.c, stone.color);
  251.             }
  252.  
  253.             score++;
  254.  
  255.             PrintStringOnPosition(33, 0, "Falling Rocks", ConsoleColor.White);
  256.             PrintStringOnPosition(33, 6, "Lives: " + livesCount, ConsoleColor.White);
  257.             PrintStringOnPosition(33, 7, "Score: " + score, ConsoleColor.White);
  258.  
  259.             Thread.Sleep(150);
  260.         }
  261.     }
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement