赞
踩
python愤怒的小鸟游戏
Python小游戏 Python愤怒的小鸟小游戏
运行环境:PyCharm,Pygame
总共11关,有音效
所有文件加起来代码大约900行
import os import math import time import pygame current_path = os.getcwd() # 获取当前工作目录路径 为了读取图片 import pymunk as pm #标识 from characters import Bird from level import Level pygame.init() #初始化背景设置 screen = pygame.display.set_mode((1200, 650)) redbird = pygame.image.load( "../resources/images/red-bird3.png").convert_alpha() background2 = pygame.image.load( "../resources/images/background3.png").convert_alpha() sling_image = pygame.image.load( "../resources/images/sling-3.png").convert_alpha() full_sprite = pygame.image.load( "../resources/images/full-sprite.png").convert_alpha() rect = pygame.Rect(181, 1050, 50, 50) #矩形对象 left,top,width,height 选了一个最小的小怪 cropped = full_sprite.subsurface(rect).copy() #准备把每一个小怪裁剪出来,先创建一个子表面 pig_image = pygame.transform.scale(cropped, (30, 30)) #调整大小 buttons = pygame.image.load( "../resources/images/selected-buttons.png").convert_alpha() pig_happy = pygame.image.load( "../resources/images/pig_failed.png").convert_alpha() stars = pygame.image.load( "../resources/images/stars-edited.png").convert_alpha() rect = pygame.Rect(0, 0, 200, 200) star1 = stars.subsurface(rect).copy() rect = pygame.Rect(204, 0, 200, 200) star2 = stars.subsurface(rect).copy() rect = pygame.Rect(426, 0, 200, 200) star3 = stars.subsurface(rect).copy() rect = pygame.Rect(164, 10, 60, 60) pause_button = buttons.subsurface(rect).copy() #暂停 rect = pygame.Rect(24, 4, 100, 100) replay_button = buttons.subsurface(rect).copy() #重启 rect = pygame.Rect(142, 365, 130, 100) next_button = buttons.subsurface(rect).copy() #下一关 clock = pygame.time.Clock() rect = pygame.Rect(18, 212, 100, 100) play_button = buttons.subsurface(rect).copy() clock = pygame.time.Clock() running = True # 物理 space = pm.Space() space.gravity = (0.0, -700.0) # 设定重力参数 pigs = [] birds = [] balls = [] polys = [] beams = [] columns = [] poly_points = [] ball_number = 0 polys_dict = {} mouse_distance = 0 rope_lenght = 90 angle = 0 x_mouse = 0 #鼠标X方向 y_mouse = 0 #鼠标Y方向 count = 0 mouse_pressed = False #按下鼠标 t1 = 0 tick_to_next_circle = 10 RED = (255, 0, 0) BLUE = (0, 0, 255) BLACK = (0, 0, 0) WHITE = (255, 255, 255) sling_x, sling_y = 135, 450 sling2_x, sling2_y = 160, 450 score = 0 game_state = 0 #游戏状态 bird_path = [] counter = 0 restart_counter = False bonus_score_once = True bold_font = pygame.font.SysFont("arial", 30, bold=True) bold_font2 = pygame.font.SysFont("arial", 40, bold=True) bold_font3 = pygame.font.SysFont("arial", 50, bold=True) wall = False #静态地板 static_body = pm.Body(body_type=pm.Body.STATIC) static_lines = [pm.Segment(static_body, (0.0, 060.0), (1200.0, 060.0), 0.0)] #(body,a,b,半径) static_lines1 = [pm.Segment(static_body, (1200.0, 060.0), (1200.0, 800.0), 0.0)] for line in static_lines: line.elasticity = 0.95 #弹性系数 line.friction = 1 #摩擦系数 line.collision_type = 3 #碰撞类型 for line in static_lines1: line.elasticity = 0.95 line.friction = 1 line.collision_type = 3 space.add(static_body) for line in static_lines: space.add(line) """for line in static_lines1: space.add(line)""" def to_pygame(p): """将pymunk转换为pygame坐标""" return int(p.x), int(-p.y+600) def vector(p0, p1): """Return the vector of the points p0 = (xo,yo), p1 = (x1,y1)""" a = p1[0] - p0[0] b = p1[1] - p0[1] return (a, b) def unit_vector(v): """Return the unit vector of the points v = (a,b)""" h = ((v[0]**2)+(v[1]**2))**0.5 if h == 0: h = 0.000000000000001 ua = v[0] / h ub = v[1] / h return (ua, ub) def distance(xo, yo, x, y): """distance between points""" dx = x - xo dy = y - yo d = ((dx ** 2) + (dy ** 2)) ** 0.5 return d def load_music(): song1 = '../resources/sounds/angry-birds.ogg' pygame.mixer.music.load(song1) pygame.mixer.music.play(-1) def sling_action(): """Set up sling behavior""" global mouse_distance #鼠标距离 global rope_lenght global angle global x_mouse global y_mouse # 把鸟固定在吊索上 v = vector((sling_x, sling_y), (x_mouse, y_mouse)) uv = unit_vector(v) uv1 = uv[0] uv2 = uv[1] mouse_distance = distance(sling_x, sling_y, x_mouse, y_mouse) pu = (uv1*rope_lenght+sling_x, uv2*rope_lenght+sling_y) bigger_rope = 102 x_redbird = x_mouse - 20 y_redbird = y_mouse - 20 if mouse_distance > rope_lenght: pux, puy = pu pux -= 20 puy -= 20 pul = pux, puy screen.blit(redbird, pul) pu2 = (uv1*bigger_rope+sling_x, uv2*bigger_rope+sling_y) pygame.draw.line(screen, (0, 0, 0), (sling2_x, sling2_y), pu2, 5) screen.blit(redbird, pul) pygame.draw.line(screen, (0, 0, 0), (sling_x, sling_y), pu2, 5) else: mouse_distance += 10 pu3 = (uv1*mouse_distance+sling_x, uv2*mouse_distance+sling_y) pygame.draw.line(screen, (0, 0, 0), (sling2_x, sling2_y), pu3, 5) screen.blit(redbird, (x_redbird, y_redbird)) pygame.draw.line(screen, (0, 0, 0), (sling_x, sling_y), pu3, 5) # Angle of impulse dy = y_mouse - sling_y dx = x_mouse - sling_x if dx == 0: dx = 0.00000000000001 angle = math.atan((float(dy))/dx) def draw_level_cleared(): """Draw level cleared""" global game_state global bonus_score_once global score level_cleared = bold_font3.render("Level Cleared!", 1, WHITE) score_level_cleared = bold_font2.render(str(score), 1, WHITE) if level.number_of_birds >= 0 and len(pigs) == 0: if bonus_score_once: score += (level.number_of_birds-1) * 10000 bonus_score_once = False game_state = 4 rect = pygame.Rect(300, 0, 600, 800) pygame.draw.rect(screen, BLACK, rect) screen.blit(level_cleared, (450, 90)) if score >= level.one_star and score <= level.two_star: screen.blit(star1, (310, 190)) if score >= level.two_star and score <= level.three_star: screen.blit(star1, (310, 190)) screen.blit(star2, (500, 170)) if score >= level.three_star: screen.blit(star1, (310, 190)) screen.blit(star2, (500, 170)) screen.blit(star3, (700, 200)) screen.blit(score_level_cleared, (550, 400)) screen.blit(replay_button, (510, 480)) screen.blit(next_button, (620, 480)) def draw_level_failed(): """Draw level failed""" global game_state failed = bold_font3.render("Level Failed", 1, WHITE) if level.number_of_birds <= 0 and time.time() - t2 > 5 and len(pigs) > 0: game_state = 3 rect = pygame.Rect(300, 0, 600, 800) pygame.draw.rect(screen, BLACK, rect) screen.blit(failed, (450, 90)) screen.blit(pig_happy, (380, 120)) screen.blit(replay_button, (520, 460)) def restart(): """Delete all objects of the level""" pigs_to_remove = [] birds_to_remove = [] columns_to_remove = [] beams_to_remove = [] for pig in pigs: pigs_to_remove.append(pig) for pig in pigs_to_remove: space.remove(pig.shape, pig.shape.body) pigs.remove(pig) for bird in birds: birds_to_remove.append(bird) for bird in birds_to_remove: space.remove(bird.shape, bird.shape.body) birds.remove(bird) for column in columns: columns_to_remove.append(column) for column in columns_to_remove: space.remove(column.shape, column.shape.body) columns.remove(column) for beam in beams: beams_to_remove.append(beam) for beam in beams_to_remove: space.remove(beam.shape, beam.shape.body) beams.remove(beam) def post_solve_bird_pig(arbiter, space, _): """Collision between bird and pig""" surface=screen a, b = arbiter.shapes bird_body = a.body pig_body = b.body p = to_pygame(bird_body.position) p2 = to_pygame(pig_body.position) r = 30 pygame.draw.circle(surface, BLACK, p, r, 4) pygame.draw.circle(surface, RED, p2, r, 4) pigs_to_remove = [] for pig in pigs: if pig_body == pig.body: pig.life -= 20 pigs_to_remove.append(pig) global score score += 10000 for pig in pigs_to_remove: space.remove(pig.shape, pig.shape.body) pigs.remove(pig) def post_solve_bird_wood(arbiter, space, _): """Collision between bird and wood""" poly_to_remove = [] if arbiter.total_impulse.length > 1100: a, b = arbiter.shapes for column in columns: if b == column.shape: poly_to_remove.append(column) for beam in beams: if b == beam.shape: poly_to_remove.append(beam) for poly in poly_to_remove: if poly in columns: columns.remove(poly) if poly in beams: beams.remove(poly) space.remove(b, b.body) global score score += 5000 def post_solve_pig_wood(arbiter, space, _): """Collision between pig and wood""" pigs_to_remove = [] if arbiter.total_impulse.length > 700: pig_shape, wood_shape = arbiter.shapes for pig in pigs: if pig_shape == pig.shape: pig.life -= 20 global score score += 10000 if pig.life <= 0: pigs_to_remove.append(pig) for pig in pigs_to_remove: space.remove(pig.shape, pig.shape.body) pigs.remove(pig) # 小鸟和小猪 space.add_collision_handler(0, 1).post_solve=post_solve_bird_pig # 小鸟和木头 space.add_collision_handler(0, 2).post_solve=post_solve_bird_wood # 小猪和木头 space.add_collision_handler(1, 2).post_solve=post_solve_pig_wood load_music() level = Level(pigs, columns, beams, space) level.number = 0 level.load_level() while running: # Input handling for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False elif event.type == pygame.KEYDOWN and event.key == pygame.K_w: if wall: for line in static_lines1: space.remove(line) wall = False else: for line in static_lines1: space.add(line) wall = True elif event.type == pygame.KEYDOWN and event.key == pygame.K_s: space.gravity = (0.0, -10.0) level.bool_space = True elif event.type == pygame.KEYDOWN and event.key == pygame.K_n: space.gravity = (0.0, -700.0) level.bool_space = False if (pygame.mouse.get_pressed()[0] and x_mouse > 100 and x_mouse < 250 and y_mouse > 370 and y_mouse < 550): mouse_pressed = True if (event.type == pygame.MOUSEBUTTONUP and event.button == 1 and mouse_pressed): # Release new bird mouse_pressed = False if level.number_of_birds > 0: level.number_of_birds -= 1 t1 = time.time()*1000 xo = 154 yo = 156 if mouse_distance > rope_lenght: mouse_distance = rope_lenght if x_mouse < sling_x+5: bird = Bird(mouse_distance, angle, xo, yo, space) birds.append(bird) else: bird = Bird(-mouse_distance, angle, xo, yo, space) birds.append(bird) if level.number_of_birds == 0: t2 = time.time() if event.type == pygame.MOUSEBUTTONUP and event.button == 1: if (x_mouse < 60 and y_mouse < 155 and y_mouse > 90): game_state = 1 if game_state == 1: if x_mouse > 500 and y_mouse > 200 and y_mouse < 300: # Resume in the paused screen game_state = 0 if x_mouse > 500 and y_mouse > 300: # Restart in the paused screen restart() level.load_level() game_state = 0 bird_path = [] if game_state == 3: # Restart in the failed level screen if x_mouse > 500 and x_mouse < 620 and y_mouse > 450: restart() level.load_level() game_state = 0 bird_path = [] score = 0 if game_state == 4: # Build next level if x_mouse > 610 and y_mouse > 450: restart() level.number += 1 game_state = 0 level.load_level() score = 0 bird_path = [] bonus_score_once = True if x_mouse < 610 and x_mouse > 500 and y_mouse > 450: # Restart in the level cleared screen restart() level.load_level() game_state = 0 bird_path = [] score = 0 x_mouse, y_mouse = pygame.mouse.get_pos() # Draw background screen.fill((130, 200, 100)) screen.blit(background2, (0, -50)) # Draw first part of the sling rect = pygame.Rect(50, 0, 70, 220) screen.blit(sling_image, (138, 420), rect) # Draw the trail left behind for point in bird_path: pygame.draw.circle(screen, WHITE, point, 5, 0) # Draw the birds in the wait line if level.number_of_birds > 0: for i in range(level.number_of_birds-1): x = 100 - (i*35) screen.blit(redbird, (x, 508)) # Draw sling behavior if mouse_pressed and level.number_of_birds > 0: sling_action() else: if time.time()*1000 - t1 > 300 and level.number_of_birds > 0: screen.blit(redbird, (130, 426)) else: pygame.draw.line(screen, (0, 0, 0), (sling_x, sling_y-8), (sling2_x, sling2_y-7), 5) birds_to_remove = [] pigs_to_remove = [] counter += 1 # Draw birds for bird in birds: if bird.shape.body.position.y < 0: birds_to_remove.append(bird) p = to_pygame(bird.shape.body.position) x, y = p x -= 22 y -= 20 screen.blit(redbird, (x, y)) pygame.draw.circle(screen, BLUE, p, int(bird.shape.radius), 2) if counter >= 3 and time.time() - t1 < 5: bird_path.append(p) restart_counter = True if restart_counter: counter = 0 restart_counter = False # Remove birds and pigs for bird in birds_to_remove: space.remove(bird.shape, bird.shape.body) birds.remove(bird) for pig in pigs_to_remove: space.remove(pig.shape, pig.shape.body) pigs.remove(pig) # Draw static lines for line in static_lines: body = line.body pv1 = body.position + line.a.rotated(body.angle) pv2 = body.position + line.b.rotated(body.angle) p1 = to_pygame(pv1) p2 = to_pygame(pv2) pygame.draw.lines(screen, (150, 150, 150), False, [p1, p2]) i = 0 # Draw pigs for pig in pigs: i += 1 # print (i,pig.life) pig = pig.shape if pig.body.position.y < 0: pigs_to_remove.append(pig) p = to_pygame(pig.body.position) x, y = p angle_degrees = math.degrees(pig.body.angle) img = pygame.transform.rotate(pig_image, angle_degrees) w,h = img.get_size() x -= w*0.5 y -= h*0.5 screen.blit(img, (x, y)) pygame.draw.circle(screen, BLUE, p, int(pig.radius), 2) # Draw columns and Beams for column in columns: column.draw_poly('columns', screen) for beam in beams: beam.draw_poly('beams', screen) # Update physics dt = 1.0/50.0/2. for x in range(2): space.step(dt) # make two updates per frame for better stability # Drawing second part of the sling rect = pygame.Rect(0, 0, 60, 200) screen.blit(sling_image, (120, 420), rect) # Draw score score_font = bold_font.render("SCORE", 1, WHITE) number_font = bold_font.render(str(score), 1, WHITE) screen.blit(score_font, (1060, 90)) if score == 0: screen.blit(number_font, (1100, 130)) else: screen.blit(number_font, (1060, 130)) screen.blit(pause_button, (10, 90)) # Pause option if game_state == 1: screen.blit(play_button, (500, 200)) screen.blit(replay_button, (500, 300)) draw_level_cleared() draw_level_failed() pygame.display.flip() clock.tick(50) pygame.display.set_caption("fps: " + str(clock.get_fps()))
import pymunk as pm from pymunk import Vec2d class Bird(): def __init__(self, distance, angle, x, y, space): self.life = 20 mass = 5 # 质量 radius = 12 # 半径 inertia = pm.moment_for_circle(mass, 0, radius, (0, 0)) #根据质量和转动惯量来创建一个刚体 body = pm.Body(mass, inertia) body.position = x, y power = distance * 53 impulse = power * Vec2d(1, 0) angle = -angle body.apply_impulse_at_local_point(impulse.rotated(angle)) shape = pm.Circle(body, radius, (0, 0)) shape.elasticity = 0.95 shape.friction = 1 shape.collision_type = 0 space.add(body, shape) self.body = body self.shape = shape class Pig(): def __init__(self, x, y, space): self.life = 20 mass = 5 radius = 14 inertia = pm.moment_for_circle(mass, 0, radius, (0, 0)) body = pm.Body(mass, inertia) body.position = x, y shape = pm.Circle(body, radius, (0, 0)) shape.elasticity = 0.95 shape.friction = 1 shape.collision_type = 1 space.add(body, shape) self.body = body self.shape = shape
from characters import Pig from polygon import Polygon class Level(): def __init__(self, pigs, columns, beams, space): self.pigs = pigs self.columns = columns self.beams = beams self.space = space self.number = 0 self.number_of_birds = 4 # lower limit self.one_star = 30000 self.two_star = 40000 self.three_star = 60000 self.bool_space = False def open_flat(self, x, y, n): """Create a open flat struture""" y0 = y for i in range(n): y = y0+100+i*100 p = (x, y) self.columns.append(Polygon(p, 20, 85, self.space)) p = (x+60, y) self.columns.append(Polygon(p, 20, 85, self.space)) p = (x+30, y+50) self.beams.append(Polygon(p, 85, 20, self.space)) def closed_flat(self, x, y, n): """Create a closed flat struture""" y0 = y for i in range(n): y = y0+100+i*125 p = (x+1, y+22) self.columns.append(Polygon(p, 20, 85, self.space)) p = (x+60, y+22) self.columns.append(Polygon(p, 20, 85, self.space)) p = (x+30, y+70) self.beams.append(Polygon(p, 85, 20, self.space)) p = (x+30, y-30) self.beams.append(Polygon(p, 85, 20, self.space)) def horizontal_pile(self, x, y, n): """Create a horizontal pile""" y += 70 for i in range(n): p = (x, y+i*20) self.beams.append(Polygon(p, 85, 20, self.space)) def vertical_pile(self, x, y, n): """Create a vertical pile""" y += 10 for i in range(n): p = (x, y+85+i*85) self.columns.append(Polygon(p, 20, 85, self.space)) def build_0(self): """level 0""" pig1 = Pig(980, 100, self.space) pig2 = Pig(985, 182, self.space) self.pigs.append(pig1) self.pigs.append(pig2) p = (950, 80) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1010, 80) self.columns.append(Polygon(p, 20, 85, self.space)) p = (980, 150) self.beams.append(Polygon(p, 85, 20, self.space)) p = (950, 200) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1010, 200) self.columns.append(Polygon(p, 20, 85, self.space)) p = (980, 240) self.beams.append(Polygon(p, 85, 20, self.space)) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 self.one_star = 30000 self.two_star = 40000 self.three_star = 60000 def build_1(self): """level 1""" pig = Pig(1000, 100, self.space) self.pigs.append(pig) p = (900, 80) self.columns.append(Polygon(p, 20, 85, self.space)) p = (850, 80) self.columns.append(Polygon(p, 20, 85, self.space)) p = (850, 150) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1050, 150) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1105, 210) self.beams.append(Polygon(p, 85, 20, self.space)) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_2(self): """level 2""" pig1 = Pig(880, 180, self.space) self.pigs.append(pig1) pig2 = Pig(1000, 230, self.space) self.pigs.append(pig2) p = (880, 80) self.columns.append(Polygon(p, 20, 85, self.space)) p = (880, 150) self.beams.append(Polygon(p, 85, 20, self.space)) p = (1000, 80) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1000, 180) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1000, 210) self.beams.append(Polygon(p, 85, 20, self.space)) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_3(self): """level 3""" pig = Pig(950, 320, self.space) pig.life = 25 self.pigs.append(pig) pig = Pig(885, 225, self.space) pig.life = 25 self.pigs.append(pig) pig = Pig(1005, 225, self.space) pig.life = 25 self.pigs.append(pig) p = (1100, 100) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1070, 152) self.beams.append(Polygon(p, 85, 20, self.space)) p = (1040, 100) self.columns.append(Polygon(p, 20, 85, self.space)) p = (980, 100) self.columns.append(Polygon(p, 20, 85, self.space)) p = (920, 100) self.columns.append(Polygon(p, 20, 85, self.space)) p = (950, 152) self.beams.append(Polygon(p, 85, 20, self.space)) p = (1010, 180) self.beams.append(Polygon(p, 85, 20, self.space)) p = (860, 100) self.columns.append(Polygon(p, 20, 85, self.space)) p = (800, 100) self.columns.append(Polygon(p, 20, 85, self.space)) p = (830, 152) self.beams.append(Polygon(p, 85, 20, self.space)) p = (890, 180) self.beams.append(Polygon(p, 85, 20, self.space)) p = (860, 223) self.columns.append(Polygon(p, 20, 85, self.space)) p = (920, 223) self.columns.append(Polygon(p, 20, 85, self.space)) p = (980, 223) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1040, 223) self.columns.append(Polygon(p, 20, 85, self.space)) p = (890, 280) self.beams.append(Polygon(p, 85, 20, self.space)) p = (1010, 280) self.beams.append(Polygon(p, 85, 20, self.space)) p = (950, 300) self.beams.append(Polygon(p, 85, 20, self.space)) p = (920, 350) self.columns.append(Polygon(p, 20, 85, self.space)) p = (980, 350) self.columns.append(Polygon(p, 20, 85, self.space)) p = (950, 400) self.beams.append(Polygon(p, 85, 20, self.space)) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_4(self): """level 4""" pig = Pig(900, 300, self.space) self.pigs.append(pig) pig = Pig(1000, 500, self.space) self.pigs.append(pig) pig = Pig(1100, 400, self.space) self.pigs.append(pig) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_5(self): """level 5""" pig = Pig(900, 70, self.space) self.pigs.append(pig) pig = Pig(1000, 152, self.space) self.pigs.append(pig) for i in range(9): p = (800, 70+i*21) self.beams.append(Polygon(p, 85, 20, self.space)) for i in range(4): p = (1000, 70+i*21) self.beams.append(Polygon(p, 85, 20, self.space)) p = (970, 176) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1026, 176) self.columns.append(Polygon(p, 20, 85, self.space)) p = (1000, 230) self.beams.append(Polygon(p, 85, 20, self.space)) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_6(self): """level 6""" pig = Pig(920, 533, self.space) pig.life = 40 self.pigs.append(pig) pig = Pig(820, 533, self.space) self.pigs.append(pig) pig = Pig(720, 633, self.space) self.pigs.append(pig) self.closed_flat(895, 423, 1) self.vertical_pile(900, 0, 5) self.vertical_pile(926, 0, 5) self.vertical_pile(950, 0, 5) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_7(self): """level 7""" pig = Pig(978, 180, self.space) pig.life = 30 self.pigs.append(pig) pig = Pig(978, 280, self.space) pig.life = 30 self.pigs.append(pig) pig = Pig(978, 80, self.space) pig.life = 30 self.pigs.append(pig) self.open_flat(950, 0, 3) self.vertical_pile(850, 0, 3) self.vertical_pile(830, 0, 3) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_8(self): """level 8""" pig = Pig(1000, 180, self.space) pig.life = 30 self.pigs.append(pig) pig = Pig(1078, 280, self.space) pig.life = 30 self.pigs.append(pig) pig = Pig(900, 80, self.space) pig.life = 30 self.pigs.append(pig) self.open_flat(1050, 0, 3) self.open_flat(963, 0, 2) self.open_flat(880, 0, 1) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_9(self): """level 9""" pig = Pig(1000, 180, self.space) pig.life = 20 self.pigs.append(pig) pig = Pig(900, 180, self.space) pig.life = 20 self.pigs.append(pig) self.open_flat(1050, 0, 3) self.open_flat(963, 0, 2) self.open_flat(880, 0, 2) self.open_flat(790, 0, 3) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_10(self): """level 10""" pig = Pig(960, 250, self.space) pig.life = 20 self.pigs.append(pig) pig = Pig(820, 160, self.space) self.pigs.append(pig) pig = Pig(1100, 160, self.space) self.pigs.append(pig) self.vertical_pile(900, 0, 3) self.vertical_pile(930, 0, 3) self.vertical_pile(1000, 0, 3) self.vertical_pile(1030, 0, 3) self.horizontal_pile(970, 250, 2) self.horizontal_pile(820, 0, 4) self.horizontal_pile(1100, 0, 4) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def build_11(self): """level 11""" pig = Pig(820, 177, self.space) self.pigs.append(pig) pig = Pig(960, 150, self.space) self.pigs.append(pig) pig = Pig(1100, 130, self.space) self.pigs.append(pig) pig = Pig(890, 270, self.space) pig.life = 30 self.pigs.append(pig) self.horizontal_pile(800, 0, 5) self.horizontal_pile(950, 0, 3) self.horizontal_pile(1100, 0, 2) self.vertical_pile(745, 0, 2) self.vertical_pile(855, 0, 2) self.vertical_pile(900, 0, 2) self.vertical_pile(1000, 0, 2) p = (875, 230) self.beams.append(Polygon(p, 85, 20, self.space)) self.number_of_birds = 4 if self.bool_space: self.number_of_birds = 8 def load_level(self): try: build_name = "build_"+str(self.number) getattr(self, build_name)() except AttributeError: self.number = 0 build_name = "build_"+str(self.number) getattr(self, build_name)()
有问题,或者需要协助调试运行项目的也可以
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。