Корзина пуста
Дата публикации:
Python cmd игра. можете помочь с игрой в cmd, по типу snake.просто не понимаю как сделать логику.
Python cmd игра. можете помочь с игрой в cmd, по типу snake.просто не понимаю как сделать логику.
Конечно, я могу помочь с написанием игры в cmd по типу змейки. Вот небольшой набросок кода, который может помочь вам начать:
import msvcrt
import os
import random
# Определение размеров окна cmd
os.system("mode con cols=120 lines=30")
# Определение размеров игрового поля
width = 40
height = 20
# Инициализация змейки
snake = [(width // 2, height // 2)]
direction = (0, 0)
# Инициализация фрукта
fruit = (random.randint(1, width-2), random.randint(1, height-2))
# Основной игровой цикл
while True:
os.system("cls") # Очистка экрана
# Отрисовка игрового поля
print("#" * (width + 2))
for y in range(height):
for x in range(width):
if x == 0 or x == width - 1:
print("#", end="")
elif (x, y) in snake:
print("O", end="")
elif (x, y) == fruit:
print("F", end="")
else:
print(" ", end="")
print()
print("#" * (width + 2))
# Управление змейкой
if msvcrt.kbhit():
key = msvcrt.getch()
if key == b"w" and direction != (0, 1):
direction = (0, -1)
elif key == b"s" and direction != (0, -1):
direction = (0, 1)
elif key == b"a" and direction != (1, 0):
direction = (-1, 0)
elif key == b"d" and direction != (-1, 0):
direction = (1, 0)
# Обновление положения змейки
head = (snake[0][0] + direction[0], snake[0][1] + direction[1])
snake.insert(0, head)
if head == fruit:
fruit = (random.randint(1, width-2), random.randint(1, height-2))
else:
snake.pop()
# Проверка на столкновение со стеной или самой собой
if (head[0] == 0 or head[0] == width - 1 or
head[1] == 0 or head[1] == height - 1 or
head in snake[1:]):
break
# Задержка для обновления экрана
time.sleep(0.1)
print("Игра окончена!")
В этом коде используется модуль msvcrt
для обработки нажатий клавиш, модуль os
для очистки экрана и модуль random
для генерации случайных координат фрукта. Змейка представлена в виде списка координат, а направление движения задается с помощью кортежа (x, y)
, где x
и y
могут быть -1, 0 или 1.
Вы можете доработать этот код, добавив функции для подсчета очков, увеличения сложности и т.д.