Robots
В роботов играют на двумерной прямоугольной сетки. Цель игры состоит в том, чтобы уничтожить всех роботов. Игра пошаговая. Изначально персонаж попадает в случайно выбранное место. Каждый раз, когда персонаж двигается в любом направлении , каждый робот перемещается на один квадратный ближе к нему. Если персонаж сталкивается с роботом, он умирает, и игра заканчивается. Когда два робота сталкиваются, они оба умирают, оставляя за собой огонь. Попадание в него смертельно для роботов и для игрока.
Скрипт
правитьfrom gasp import * # Импортируем из Gasp всё. class Player: # Создаём класс игрока. def __init__(self,x,y): self.x=x self.y=y self.shape = Circle(( self.x*10+5,self.y*10+5 ), 5, filled=True, color=color.RED) def move(self): update_when('key_pressed') key = keys_pressed()[0] # Ждём пока пользователь не нажмёт какую либо кнопку if key=="down" and self.y!=0 : self.y=self.y-1 elif key=="up" and self.y!=47: self.y=self.y+1 elif key=="left" and self.x!=0: self.x=self.x-1 elif key=="right"and self.x!=63: self.x=self.x+1 self.shape.move_to((self.x*10+5,self.y*10+5)) class Robot:#Создаём класс роботов def __init__(self,x,y): self.x=x self.y=y self.shape = Box((10*self.x, 10*self.y), 10, 10) def place(self,x,y): self.x=x self.y=y def move(self, x_pl,y_pl): if x_pl>self.x: self.x=self.x+1 elif x_pl<self.x: self.x=self.x-1 if y_pl<self.y: self.y=self.y-1 elif y_pl>self.y: self.y=self.y+1 self.shape.move_to((self.x*10,self.y*10)) class Fire: def __init__(self,x,y): self.x=x self.y=y self.shape = Image("fire.bmp", (self.x*10- 5,self.y*10-5), 20, height=20) def stolk_dvuh(r_1,r_2): return r_1.x == r_2.x and r_1.y == r_2.y
def stolk_odnogo_i_vseh(r_1, vse): for y in vse: if stolk_dvuh(r_1,y): return True return False
begin_graphics() # So that you can draw things
finished = False
x = Player(random_between(0, 63),random_between(0, 47))
robot_list=[]
for r in range(60):
robot_list.append(Robot(random_between(0, 63),random_between(0, 47) ))
fire_list=[]
mus_bomb = Sound("bomb.wav")
while not finished and robot_list != []: n_bomb=False x.move() finished = stolk_odnogo_i_vseh(x,robot_list) or stolk_odnogo_i_vseh(x,fire_list) x.move() # Player.move(x) finished = finished or stolk_odnogo_i_vseh(x,robot_list) or stolk_odnogo_i_vseh(x,fire_list) for z in robot_list: z.move(x.x,x.y) robot_list_copy = robot_list[:] for z in robot_list_copy: vse_krome_z = robot_list_copy[:] vse_krome_z.remove(z) z_stolk = stolk_odnogo_i_vseh(z, vse_krome_z) or stolk_odnogo_i_vseh(z, fire_list) n_bomb = n_bomb or z_stolk if z_stolk: # udalyaem z remove_from_screen(z.shape) robot_list.remove(z) fire_list.append(Fire(z.x,z.y)) if n_bomb: play_sound(mus_bomb) finished = finished or stolk_odnogo_i_vseh(x,robot_list) or stolk_odnogo_i_vseh(x,fire_list)
if robot_list==[]:
Text("YOU WIN", (220,240), color=color.RED, size=70)
else:
Text("YOU LOSE", (220,240), color=color.RED, size=70)
update_when('key_pressed')
end_graphics() # Заканчиваем рисовать