🐍 Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ “Π—ΠΌΠ΅ΠΉΠΊΠ°” Π½Π° языкС Python

by itisgood

Если Π²Ρ‹ Π»ΡŽΠ±ΠΈΡ‚Π΅ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Π·ΠΌΠ΅ΠΉΠΊΡƒ, я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π°ΠΌ интСрСсна.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ-Π·ΠΌΠ΅ΠΉΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ Π² Python.

БущСствуСт нСсколько способов создания этой ΠΈΠ³Ρ€Ρ‹, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ использованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python PyGame – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для создания ΠΈΠ³Ρ€.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ – это использованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ turtle.

Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ поставляСтся с прСдустановлСнным Python ΠΈ прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ холст для создания Ρ„ΠΈΠ³ΡƒΡ€ ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ turtle для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нашСй простой ΠΈΠ³Ρ€Ρ‹ Π² Π·ΠΌΠ΅ΠΉΠΊΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Π° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… модуля, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ;

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ Time – Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ количСство сСкунд, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ Random – ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ числа случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Python.
  • Π”Ρ€ΡƒΠ³ΠΈΠ΅ основныС инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ понадобятся, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ VSCode. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python 3 Π½Π° Π²Π°ΡˆΡƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ссли Ρƒ вас Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚

Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ вСсСло!

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ³Ρ€Π° “Π—ΠΌΠ΅ΠΉΠΊΠ°

ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ†Π΅Π»ΡŒ этой ΠΈΠ³Ρ€Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°Π±Ρ€Π°Π» наибольшСС количСство ΠΎΡ‡ΠΊΠΎΠ², управляя Π·ΠΌΠ΅Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π΄Ρƒ, которая отобраТаСтся Π½Π° экранС.

Π˜Π³Ρ€ΠΎΠΊ управляСт Π·ΠΌΠ΅Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… клавиш направлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ соотносимы с Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ двиТСния Π·ΠΌΠ΅ΠΈ.

Если змСя врСТСтся Π² Π±Π»ΠΎΠΊ ΠΈΠ»ΠΈ Π² саму сСбя, ΠΈΠ³Ρ€ΠΎΠΊ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΈΠ³Ρ€Ρƒ.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой ΠΈΠ³Ρ€Ρ‹ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

  • Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ прСдустановлСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (turtle, time, ΠΈ random).
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экрана ΠΈΠ³Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля turtle.
  • Установка клавиш для направлСния двиТСния Π·ΠΌΠ΅ΠΉΠΊΠΈ ΠΏΠΎ экрану.
  • РСализация ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ процСсса.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» snakegame.py, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π’ этой части ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ turtle, time ΠΈ random, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прСдустановлСны Π² Python.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ установим значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ счСта ΠΈΠ³Ρ€ΠΎΠΊΠ°, максимального счСта, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ достигнСт, ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ…ΠΎΠ΄Π΅.

Для вычислСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ time.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π² ваш Ρ„Π°ΠΉΠ» snakegame.py.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экрана ΠΈΠ³Ρ€Ρ‹

ΠœΠΎΠ΄ΡƒΠ»ΡŒ turtle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ здСсь, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ холст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ экраном ΠΎΠΊΠ½Π° ΠΈΠ³Ρ€Ρ‹.

ΠžΡ‚ΡΡŽΠ΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ Π·ΠΌΠ΅ΠΈ ΠΈ Π΅Π΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ.

На нашСм экранС Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ отслСТиваСмый счСт ΠΈΠ³Ρ€ΠΎΠΊΠ°.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ этот ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» Python.

# window screen created
wind = turtle.Screen()
wind.title("Snake Maze🐍")
wind.bgcolor("red")

# The screen size
wind.setup(width=600, height=600)


# creating the snake 
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"

# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_food.goto(0, 100)

pen = turtle.Turtle()
pen.speed(0)
pen.shape('square')
pen.color('white')
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Your_score: 0 Highest_Score : 0", align="center", 
font=("Arial", 24, "normal"))
turtle.mainloop()

 

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создадим Π΅Π΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ собираСт змСя.

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ счСт ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° змСя собираСт Π΅Π΄Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ счСт, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ достигаСт Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ pen.write() для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого.

ΠœΠ΅Ρ‚ΠΎΠ΄ hideturtle() скрываСт Π·Π½Π°Ρ‡ΠΎΠΊ экрана Π½Π° участкС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написан этот тСкст.

Π’Π°ΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ turtle.mainloop() Π² ΠΊΠΎΠ½Ρ†Π΅ вашСго ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ экран дольшС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° экранС.

Настройка клавиш направлСния для Π·ΠΌΠ΅ΠΈ

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ установим ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ клавиши, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния Π·ΠΌΠ΅ΠΉΠΊΠΈ ΠΏΠΎ экрану.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ “L” для Π»Π΅Π²ΠΎΠΉ стороны, “R” для ΠΏΡ€Π°Π²ΠΎΠΉ, “U” для Π²Π²Π΅Ρ€Ρ…, “D” для Π²Π½ΠΈΠ·.

ΠœΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ эти направлСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ направлСния Ρ‡Π΅Ρ€Π΅ΠΏΠ°Ρ…ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρƒ Π·ΠΌΠ΅ΠΈ.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π² свой ΠΊΠΎΠ΄.

# Assigning directions
def moveleft():
    if snake.direction != "right":
        snake.direction = "left"

def moveright():
    if snake.direction != "left":
        snake.direction = "right"

def moveup():
    if snake.direction != "down":
        snake.direction = "up"

def movedown():
    if snake.direction != "up":
        snake.direction = "down"

def move():
    if snake.direction == "up":
        coord_y = snake.ycor()
        snake.sety(coord_y+20)

    if snake.direction == "down":
        coord_y = snake.ycor()
        snake.sety(coord_y-20)

    if snake.direction == "right":
        coord_x = snake.xcor()
        snake.setx(coord_x+20)

    if snake.direction == "left":
        coord_x = snake.xcor()
        snake.setx(coord_x-20)

wind.listen()
wind.onkeypress(moveleft, 'L')
wind.onkeypress(moveright, 'R')
wind.onkeypress(moveup, 'U')
wind.onkeypress(movedown, 'D')

Ѐункция move() Π²Ρ‹ΡˆΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ значСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Ѐункция listen() являСтся ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΌ событий, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ змСю Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ.

РСализация гСймплСя ΠΈΠ³Ρ€Ρ‹ Π² Π·ΠΌΠ΅ΠΉΠΊΡƒ

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π°Π»ΠΎΠΆΠΈΠ»ΠΈ основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈΠ³Ρ€Ρ‹ Π² Π·ΠΌΠ΅ΠΉΠΊΡƒ, Π½Π°ΠΌ прСдстоит ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° собираСт Π΅Π΄Ρƒ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π²Π΅Ρ‚.
  • Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ счСта ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° змСя собираСт Π΅Π΄Ρƒ, ΠΈ отслСТиваниС самого высокого Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.
  • Π˜Π³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ змСю, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ со стСной ΠΈΠ»ΠΈ собствСнным Ρ‚Π΅Π»ΠΎΠΌ.
  • Π˜Π³Ρ€Π° пСрСзапускаСтся ΠΏΡ€ΠΈ столкновСнии Π·ΠΌΠ΅ΠΈ.
  • ΠŸΡ€ΠΈ пСрСзапускС ΠΈΠ³Ρ€Ρ‹ счСт ΠΈΠ³Ρ€ΠΎΠΊΠ° обнуляСтся, Π° Π½Π° экранС сохраняСтся Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ счСт ΠΈΠ³Ρ€ΠΎΠΊΠ°.
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этого ΠΊΠΎΠ΄Π° Π² свой Ρ„Π°ΠΉΠ» python.
segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290:
        time.sleep(1)
        snake.goto(0, 0)
        snake.direction = "Stop"
        snake.shape("square")
        snake.color("green")

        for segment in segments:
            segment.goto(1000, 1000)
            segments.clear()
            player_score = 0
            delay_time = 0.1
            pen.clear()
            pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

        if snake.distance(snake_food) < 20:
            coord_x = random.randint(-270, 270)
            coord_y = random.randint(-270, 270)
            snake_food.goto(coord_x, coord_y)

            # Adding segment
            added_segment = turtle.Turtle()
            added_segment.speed(0)
            added_segment.shape("square")
            added_segment.color("white")
            added_segment.penup()
            segments.append(added_segment)
            delay_time -= 0.001
            player_score += 5

            if player_score > highest_score:
                highest_score = player_score
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

    # checking for collisions
    for i in range(len(segments)-1, 0, -1):
        coord_x = segments[i-1].xcor()
        coord_y = segments[i-1].ycor()
        segments[i].goto(coord_x, coord_y)

    if len(segments) > 0:
        coord_x = snake.xcor()
        coord_y = snake.ycor()
        segments[0].goto(coord_x, coord_y)
    move()

    for segment in segments:
        if segment.distance(snake) < 20:
            time.sleep(1)
            snake.goto(0, 0)
            snake.direction = "stop"
            snake.color('white')
            snake.shape('square')

            for segment in segments:
                segment.goto(1000, 1000)
                segment.clear()
                player_score = 0
                delay_time = 0.1
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

     time.sleep(delay_time)

turtle.mainloop()

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ для ΠΏΠΈΡ‰ΠΈ Π·ΠΌΠ΅ΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… экрана.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° змСя собираСт эту ΠΏΠΈΡ‰Ρƒ, сСгмСнт Π΅Π΅ Ρ‚Π΅Π»Π° увСличиваСтся, ΠΎΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡΡΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π²Π΅Ρ‚; Π² Π΄Π°Π½Π½ΠΎΠΌ случаС – Π² Π±Π΅Π»Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ рост.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ 🐍

ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ “turtle” – это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π·Π°Π±Π°Π²Π½Ρ‹Ρ… ΠΈ простых способов создания ΠΈΠ³Ρ€Ρ‹ Π² Π·ΠΌΠ΅ΠΉΠΊΡƒ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PyGame

см. Ρ‚Π°ΠΊΠΆΠ΅:

 

Loading

You may also like

Leave a Comment