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;
- using System.Threading;
- namespace snake
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WindowHeight = 16;
- Console.WindowWidth = 32;
- int screenH = Console.WindowHeight;
- int screenW = Console.WindowWidth;
- // laitetaan kooksi 32x16 ja alustetaan muuttujat korkeudelle ja leveydelle pelin toimintaa varten
- mode:
- Console.Clear();
- Console.WriteLine("Valitse pelimuoto:"); //valitaan seinällinen vai seinätön pelimuoto
- Console.WriteLine("1 = Seinät, 2 = Ei Seiniä");
- Console.SetCursorPosition(0, 3);
- Console.WriteLine("Nuolinäppäimet ohjaa matoa");
- Console.WriteLine("X keskeyttääksesi");
- string walls1 = Console.ReadLine();
- if (Int32.TryParse(walls1, out int walls2))
- {
- if (walls2 > 2)
- {
- goto mode;
- }
- goto speed;
- }
- else
- {
- goto mode;
- }
- speed:
- Console.Clear();
- Console.WriteLine("Valitse nopeus:"); //valitaan madon nopeus/vaikeusaste
- Console.WriteLine("1-3 (1 nopein)");
- string speed1 = Console.ReadLine();
- if (Int32.TryParse(speed1, out int speed2))
- {
- if (speed2 > 3)
- {
- goto speed;
- }
- goto peli;
- }
- else
- {
- goto speed;
- }
- peli:
- /* Console.WriteLine(walls2);
- Console.ReadKey(); //käytin debuggaamiseen */
- int score = 3; //score alkuun 3 niin mato alottaa lyhyellä pituudella
- int gameover = 0;
- double wormspeed = 0;
- Random randomnro = new Random();
- pixel worm = new pixel(); // randomnro määrittää pisteen sijainnin wormissa luodaan madolle pää pixeli toisessa classissa
- worm.x = screenW / 2;
- worm.y = screenH / 2;
- worm.color = ConsoleColor.Green; //madon väriksi vihree ja jaetaan leveys ja pituus 2 että saadaan mato aloittamaan keskeltä
- string movement = "UP"; // defaulttina liikkuu ylöspäin
- List<int> xtail = new List<int>();
- List<int> ytail = new List<int>(); //luodaan lista madon hännästä
- int pointx = randomnro.Next(2, screenW - 2);
- int pointy = randomnro.Next(2, screenH - 2); //pisteelle randomi paikka
- DateTime time = DateTime.Now;
- DateTime time2 = DateTime.Now; // käytetään aikaa "tickeinä"/myös pisteisiin aikaa
- switch (speed2)
- {
- case 1:
- wormspeed = 200;
- break;
- case 2:
- wormspeed = 350;
- break;
- case 3:
- wormspeed = 500;
- break;
- }
- string buttonpressed = "no";
- while (true)
- {
- Console.Clear();
- if (walls2 == 1)
- {
- Console.ForegroundColor = ConsoleColor.Blue;
- if (worm.x == screenW - 1 || worm.x == 0 || worm.y == screenH - 1 || worm.y == 0) // jos mato osuu seinään niin peli loppuu
- {
- gameover = 1;
- }
- for (int i = 0; i < screenW; i++)
- {
- Console.SetCursorPosition(i, 0);
- Console.Write("■");
- }
- for (int i = 0; i < screenW; i++)
- {
- Console.SetCursorPosition(i, screenH - 1);
- Console.Write("■");
- }
- for (int i = 0; i < screenH; i++)
- {
- Console.SetCursorPosition(0, i);
- Console.Write("■");
- }
- for (int i = 0; i < screenH; i++)
- {
- Console.SetCursorPosition(screenW - 1, i);
- Console.Write("■");
- } //piirretään seinät jos ne on valittu ja laitetaan reunoihin häviäminen
- }
- Console.ForegroundColor = ConsoleColor.Green;
- if (pointx == worm.x && pointy == worm.y)
- {
- score++;
- pointx = randomnro.Next(2, screenW - 2);
- pointy = randomnro.Next(2, screenH - 2);
- } //kun mato osuu pisteeseen lisää se yhden pisteen ja laittaa uuden pisteen koordinaatit randomiin paikkaa
- for (int i = 0; i < xtail.Count(); i++)
- {
- Console.SetCursorPosition(xtail[i], ytail[i]);
- Console.Write("■");
- if (xtail[i] == worm.x && ytail[i] == worm.y)
- {
- gameover = 1;
- }
- } //piirretään häntä taulukko järjestyksessä ja määritetään että jos syödään oma häntä peli loppuu
- if (gameover == 1)
- {
- break;
- } // peli loppuu niin menee loppuun tallentamaan pisteet
- if (walls2 == 2)
- {
- if (worm.x >= screenW - 1)
- {
- worm.x = 0;
- }
- else if(worm.x <= 0)
- {
- worm.x = screenW - 1;
- }
- else if (worm.y >= screenH - 1)
- {
- worm.y = 0;
- }
- else if (worm.y <= 0)
- {
- worm.y = screenH;
- } //mato menee toisellepuolelle kenttää jos ei ole seinä ja menee alueen yli
- }
- Console.SetCursorPosition(worm.x, worm.y);
- Console.ForegroundColor = worm.color; //piirtää madon
- Console.Write("■");
- Console.SetCursorPosition(pointx, pointy);
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Write("■"); // piirretään piste
- time = DateTime.Now;
- buttonpressed = "no";
- while (true)
- {
- time2 = DateTime.Now;
- if (time2.Subtract(time).TotalMilliseconds > wormspeed) { break; } //pelin tickit
- if (Console.KeyAvailable)
- {
- ConsoleKeyInfo press = Console.ReadKey(true);
- if (press.Key.Equals(ConsoleKey.UpArrow) && movement != "DOWN" && buttonpressed == "no")
- {
- movement = "UP";
- buttonpressed = "yes";
- }
- if (press.Key.Equals(ConsoleKey.DownArrow) && movement != "UP" && buttonpressed == "no")
- {
- movement = "DOWN";
- buttonpressed = "yes";
- }
- if (press.Key.Equals(ConsoleKey.LeftArrow) && movement != "RIGHT" && buttonpressed == "no")
- {
- movement = "LEFT";
- buttonpressed = "yes";
- }
- if (press.Key.Equals(ConsoleKey.RightArrow) && movement != "LEFT" && buttonpressed == "no")
- {
- movement = "RIGHT";
- buttonpressed = "yes";
- } //Näillä katotaan suunta painnallukset, että ei lähdetä kääntymään 180astetta ja mihin päin lähdetään liikkumaan
- if (press.Key.Equals(ConsoleKey.X) && buttonpressed == "no")
- {
- gameover = 1;
- } //nappula lopettaakseen kesken
- }
- }
- xtail.Add(worm.x);
- ytail.Add(worm.y); //nämä lisää häntä tableen madon sijainnin tiedot
- switch (movement)
- {
- case "UP":
- worm.y = worm.y - 1;
- break;
- case "DOWN":
- worm.y = worm.y + 1;
- break;
- case "LEFT":
- worm.x = worm.x - 1;
- break;
- case "RIGHT":
- worm.x = worm.x + 1;
- break;
- } //nämä liikuttaa pixeliä kehotteessa äsken määritellyn suunnan perusteella
- if (xtail.Count() > score)
- {
- xtail.RemoveAt(0);
- ytail.RemoveAt(0);
- } //katkaistaan häntä piste määrään
- }
- if (walls2 == 1)
- {
- //jos seinillä
- score = score - 3;
- Console.Clear();
- Console.SetCursorPosition(0, 0);
- Console.WriteLine("Hävisit pelin");
- Console.WriteLine("Pisteitä: " + score);
- //Console.WriteLine("Highscore polussa '" + wallfile "'")
- Console.SetCursorPosition(0, 5);
- Console.WriteLine("Paina R yrittääksesi uudelleen");
- Console.WriteLine("Muita poistuaksesi");
- ConsoleKeyInfo press = Console.ReadKey(true);
- if (press.Key.Equals(ConsoleKey.R))
- {
- goto mode;
- }
- Console.ReadKey();
- }
- if (walls2 == 2)
- {
- //ei seinillä
- score = score - 3;
- Console.Clear();
- Console.SetCursorPosition(0, 0);
- Console.WriteLine("Hävisit pelin");
- Console.WriteLine("Pisteitä: " + score);
- //Console.WriteLine("Highscore polussa '" + nowallfile "'")
- Console.SetCursorPosition(0, 5);
- Console.WriteLine("Paina R yrittääksesi uudelleen");
- Console.WriteLine("Muita poistuaksesi");
- ConsoleKeyInfo press = Console.ReadKey(true);
- if (press.Key.Equals(ConsoleKey.R))
- {
- goto mode;
- }
- Console.ReadKey();
- }
- }
- class pixel
- {
- public int x { get; set; }
- public int y { get; set; }
- public ConsoleColor color { get; set; }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement