Написать консольную игру "змейка" - C#

Узнай цену своей работы

Формулировка задачи:

Нужно написать консольную игру змейка, использовать можно только
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
не могли бы вы помочь немного, натолкнуть на мысль...

Решение задачи: «Написать консольную игру "змейка"»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6.  
  7. namespace snake
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             ConsoleKey K = new ConsoleKey();
  14.             Console.CursorVisible = false;
  15.             int x = 0;//положение курсора x
  16.             int y = 0;//положение курсора y
  17.             int playersize = 0;// размер змейки
  18.             Random random = new Random();
  19.             int[, ,] pointpos = new int[3, 3, 3];//массив для чек поинтов
  20.             for (int i = 0; i < pointpos.GetLength(0); i++)
  21.             {
  22.                 pointpos[i, 0, 0] = random.Next(5, 10);//заполняем массив
  23.                 pointpos[0, i, 0] = random.Next(5, 10);//заполняем массив
  24.                 pointpos[0, 0, i] = 0;
  25.                 Console.SetCursorPosition(pointpos[0, i, 0], pointpos[i, 0, 0]);
  26.                 Console.Write("@");//выводим на экран чек поинты
  27.             }
  28.             Console.SetCursorPosition(0, 0);
  29.             Console.Write("*");//выводим нашу змейку
  30.             while(K != ConsoleKey.Escape)// пока не нажата клавиша ESC
  31.             {
  32.                 K = Console.ReadKey().Key;
  33.                 int left = Console.CursorLeft;
  34.                 int top = Console.CursorTop;
  35.                 for(int i = 0; i < pointpos.GetLength(0); i++)
  36.                 {
  37.                     if(x == pointpos[0, i, 0] && y == pointpos[i, 0, 0]) // если положение x и y совпадает с положением чек поинта
  38.                     {
  39.                         if(pointpos[0, 0, i] == 0)// если чек поинт не "съеден"(значение его 0)
  40.                         {
  41.                             playersize += 1; // добавляем единицу к размеру змейки
  42.                             pointpos[0, 0, i] = 1;// помечаем чек поинт как "съеденый"(присваиваем ему значение 1)
  43.                         }
  44.                     }
  45.                 }
  46.                 switch (K)// для управления
  47.                 {
  48.                     case ConsoleKey.UpArrow: // стрелка вверх
  49.                         Console.SetCursorPosition(x, y - 1);
  50.                         y += -1;
  51.                         Console.Clear();
  52.                         Clear(pointpos);
  53.                         Console.SetCursorPosition(x,y);
  54.                         Console.Write("*");
  55.                         Console.SetCursorPosition(x,y - 1);
  56.                         for(int i = 1; i < playersize + 1; i++)
  57.                         {
  58.                             Console.SetCursorPosition(x, y - i);
  59.                             Console.Write("*");
  60.                         }
  61.                         break;
  62.  
  63.                         case ConsoleKey.DownArrow: // стрелка вниз
  64.                         Console.SetCursorPosition(x, y + 1);
  65.                         y += 1;
  66.                         Console.Clear();
  67.                         Clear(pointpos);
  68.                         Console.SetCursorPosition(x,y);
  69.                         Console.Write("*");
  70.                         Console.SetCursorPosition(x,y + 1);
  71.                         for(int i = 1; i < playersize + 1; i++)
  72.                         {
  73.                             Console.SetCursorPosition(x, y + i);
  74.                             Console.Write("*");
  75.                         }
  76.                         break;
  77.  
  78.                     case ConsoleKey.LeftArrow:
  79.                         Console.SetCursorPosition(x - 1, y);
  80.                         x += -1;
  81.                         Console.Clear();
  82.                         Clear(pointpos);
  83.                         Console.SetCursorPosition(x,y);
  84.                         Console.Write("*");
  85.                         for(int i = 1; i <= playersize; i++)
  86.                         {
  87.                             Console.Write("*");
  88.                         }
  89.                         break;
  90.  
  91.                     case ConsoleKey.RightArrow:
  92.                         Console.SetCursorPosition(x + 1, y);
  93.                         x += 1;
  94.                         Console.Clear();
  95.                         Clear(pointpos);
  96.                         Console.SetCursorPosition(x,y);
  97.                         Console.Write("*");
  98.                         for(int i = 1; i <= playersize; i++)
  99.                         {
  100.                             Console.Write("*");
  101.                         }
  102.                         break;
  103.  
  104.                 }
  105.             }
  106.  
  107.         }
  108.  
  109.         static int Clear(int[,,] arr)
  110.         {
  111.             for (int i = 0; i < arr.GetLength(0); i++)
  112.             {
  113.                 if (arr[0, 0, i] == 0)
  114.                 {
  115.                     Console.SetCursorPosition(arr[0,i,0], arr[i,0,0]);
  116.                     Console.Write("@");
  117.                 }
  118.             }
  119.             return 1;
  120.         }
  121.     }
  122. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы