Advertisement
L4zzur

Turtle Hit It

May 29th, 2023 (edited)
1,422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.93 KB | Source Code | 0 0
  1. # импортируем нужные модули
  2. from turtle import *
  3. from random import randint
  4.  
  5. # размер игрового поля
  6. width = 170
  7. height = 200
  8.  
  9. # класс для спрайтов
  10. class Sprite(Turtle):
  11.     def __init__(self, x, y, step, shape, color):
  12.         super().__init__()
  13.         self.penup() # поднимаем перо
  14.         self.speed(0) # скорость 0
  15.         self.goto(x, y) # перемещаем в начальную точку
  16.         self.shape(shape) # устанавливаем форму
  17.         self.color(color) # устанавливаем цвет
  18.         self.step = step # запоминаем шаг
  19.  
  20.     # движение вверх
  21.     def move_up(self):
  22.         self.goto(self.xcor(),self.ycor() + self.step)
  23.  
  24.     # движение вниз
  25.     def move_down(self):
  26.         self.goto(self.xcor(),self.ycor() - self.step)
  27.  
  28.     # движение влево
  29.     def move_left(self):
  30.         self.goto(self.xcor()-self.step,self.ycor())
  31.  
  32.     # движение вправо
  33.     def move_right(self):
  34.         self.goto(self.xcor()+self.step,self.ycor())
  35.    
  36.     # проверка столкновения с другим спрайтом
  37.     def is_collide(self, sprite):
  38.         dist = self.distance(sprite.xcor(), sprite.ycor()) # ищем расстояние до другого спрайта
  39.         # если расстояние меньше 30
  40.         if dist < 30:
  41.             return True # столкнулись
  42.         else:
  43.             return False # не столкнулись
  44.  
  45.     # задать направление движения
  46.     def set_move(self, x_start, y_start, x_end, y_end):
  47.         # запоминаем координаты начала движения
  48.         self.x_start = x_start
  49.         self.y_start = y_start
  50.         # запоминаем координаты конца движения
  51.         self.x_end = x_end
  52.         self.y_end = y_end
  53.         # перемещаемся на начало
  54.         self.goto(x_start, y_start)
  55.         # задаем направление движения к конечно точке
  56.         self.setheading(self.towards(x_end, y_end))
  57.    
  58.     # сделать шаг
  59.     def make_step(self):
  60.         self.forward(self.step) # двигаем спрайт на шаг
  61.         # если расстояние от спрайта до точки конца движения МЕНЬШЕ длины шага
  62.         if self.distance(self.x_end,self.y_end) < self.step:
  63.             # меняем точки - начало теперь это конец, а конец - начало
  64.             self.set_move(self.x_end, self.y_end, self.x_start, self.y_start)
  65.  
  66. # создаем нужные спрайты
  67. player = Sprite(0, -100, 10, 'circle', 'orange') # игрок
  68. enemy1 = Sprite(-width, 0, 50, 'square', 'red') # враг 1
  69. enemy2 = Sprite(width, 70, 50, 'square', 'red') # враг 2
  70. goal = Sprite(0, 120, 0, 'triangle', 'green') # цель
  71.  
  72. # вывод количества очков
  73. t_score = Turtle()
  74. t_score.speed(100)
  75. t_score.penup()
  76. t_score.goto(-250,200)
  77. t_score.write('Очки: ' + str(total_score), font=('verdana', 20, 'bold'))
  78.  
  79. # задаем направление движения врагам
  80. enemy1.set_move(-width, 0, width, 0)
  81. enemy2.set_move(width, 70, -width, 70)
  82.  
  83. # объект Экран
  84. scr = player.getscreen()
  85. # активируем "прослушку" клавиш
  86. scr.listen()
  87. # привязываем клавиши к передвижению игрока
  88. scr.onkey(player.move_up, 'Up')
  89. scr.onkey(player.move_down, 'down')
  90. scr.onkey(player.move_left, 'left')
  91. scr.onkey(player.move_right, 'Right')
  92.  
  93. # счетчик касаний цели
  94. total = 0
  95.  
  96. # пока не коснулись цели 3 раза
  97. while total < 3:
  98.     # шаг враго
  99.     enemy1.make_step()
  100.     enemy2.make_step()
  101.  
  102.     # если игрок коснулся цели
  103.     if player.is_collide(goal):
  104.         total += 1 # счетчик касаний +1
  105.         t_score.clear()
  106.         t_score.write('Очки: ' + str(total_score), font=('verdana', 20, 'bold'))
  107.         player.goto(0, -100) # возвращаем на начало игрока
  108.    
  109.     # если игрок коснулся врага 1 или 2
  110.     if player.is_collide(enemy1) or player.is_collide(enemy2):
  111.         goal.hideturtle() # прячем цель
  112.         break # ломаем цикл
  113.  
  114. # если набрано 3 касания
  115. if total == 3:
  116.     # прячем врагов
  117.     enemy1.hideturtle()
  118.     enemy2.hideturtle()
  119.     # выведем надпись о победе
  120.     goal.goto(0,0)
  121.     goal.write('Ты победил!',font=('Arial',15,'bold'))
  122. # если не набрано 3 касания
  123. else:
  124.     # выведем надпись о проигрыше
  125.     enemy1.goto(0,0)
  126.     enemy1.write('Ты проиграл!',font=('Arial',15,'bold'))
  127.     player.hideturtle()
Tags: python turtle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement