Написать консольную игру "змейка" - C#
Формулировка задачи:
Нужно написать консольную игру змейка, использовать можно только
не могли бы вы помочь немного, натолкнуть на мысль...
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
Решение задачи: «Написать консольную игру "змейка"»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace snake
- {
- class Program
- {
- static void Main(string[] args)
- {
- ConsoleKey K = new ConsoleKey();
- Console.CursorVisible = false;
- int x = 0;//положение курсора x
- int y = 0;//положение курсора y
- int playersize = 0;// размер змейки
- Random random = new Random();
- int[, ,] pointpos = new int[3, 3, 3];//массив для чек поинтов
- for (int i = 0; i < pointpos.GetLength(0); i++)
- {
- pointpos[i, 0, 0] = random.Next(5, 10);//заполняем массив
- pointpos[0, i, 0] = random.Next(5, 10);//заполняем массив
- pointpos[0, 0, i] = 0;
- Console.SetCursorPosition(pointpos[0, i, 0], pointpos[i, 0, 0]);
- Console.Write("@");//выводим на экран чек поинты
- }
- Console.SetCursorPosition(0, 0);
- Console.Write("*");//выводим нашу змейку
- while(K != ConsoleKey.Escape)// пока не нажата клавиша ESC
- {
- K = Console.ReadKey().Key;
- int left = Console.CursorLeft;
- int top = Console.CursorTop;
- for(int i = 0; i < pointpos.GetLength(0); i++)
- {
- if(x == pointpos[0, i, 0] && y == pointpos[i, 0, 0]) // если положение x и y совпадает с положением чек поинта
- {
- if(pointpos[0, 0, i] == 0)// если чек поинт не "съеден"(значение его 0)
- {
- playersize += 1; // добавляем единицу к размеру змейки
- pointpos[0, 0, i] = 1;// помечаем чек поинт как "съеденый"(присваиваем ему значение 1)
- }
- }
- }
- switch (K)// для управления
- {
- case ConsoleKey.UpArrow: // стрелка вверх
- Console.SetCursorPosition(x, y - 1);
- y += -1;
- Console.Clear();
- Clear(pointpos);
- Console.SetCursorPosition(x,y);
- Console.Write("*");
- Console.SetCursorPosition(x,y - 1);
- for(int i = 1; i < playersize + 1; i++)
- {
- Console.SetCursorPosition(x, y - i);
- Console.Write("*");
- }
- break;
- case ConsoleKey.DownArrow: // стрелка вниз
- Console.SetCursorPosition(x, y + 1);
- y += 1;
- Console.Clear();
- Clear(pointpos);
- Console.SetCursorPosition(x,y);
- Console.Write("*");
- Console.SetCursorPosition(x,y + 1);
- for(int i = 1; i < playersize + 1; i++)
- {
- Console.SetCursorPosition(x, y + i);
- Console.Write("*");
- }
- break;
- case ConsoleKey.LeftArrow:
- Console.SetCursorPosition(x - 1, y);
- x += -1;
- Console.Clear();
- Clear(pointpos);
- Console.SetCursorPosition(x,y);
- Console.Write("*");
- for(int i = 1; i <= playersize; i++)
- {
- Console.Write("*");
- }
- break;
- case ConsoleKey.RightArrow:
- Console.SetCursorPosition(x + 1, y);
- x += 1;
- Console.Clear();
- Clear(pointpos);
- Console.SetCursorPosition(x,y);
- Console.Write("*");
- for(int i = 1; i <= playersize; i++)
- {
- Console.Write("*");
- }
- break;
- }
- }
- }
- static int Clear(int[,,] arr)
- {
- for (int i = 0; i < arr.GetLength(0); i++)
- {
- if (arr[0, 0, i] == 0)
- {
- Console.SetCursorPosition(arr[0,i,0], arr[i,0,0]);
- Console.Write("@");
- }
- }
- return 1;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д