用pygame制作的创意画笔小游戏。
以下是部分代码预览:
"""pygame过河搭桥画笔小游戏,这是pygame多关卡创意画笔类小游戏,这个程序增加Pen类,当鼠标按下移动时,画一条线给小球搭桥. 画的时间长短有限制,每关画的次数限制为3次, 并且按左键画绿色,按右键画黑色。 操作方法:按左右方向箭头操作小球,碰到红色死亡。 下一个版本是增加各种道具,藏在红色之中,通过画黑线可以进入等等。 """ __author__ = "李兴球" __date__ = "2019年1月" import math import pygame from glob import glob from pygame.locals import * def insert_point(a,b,step): """在两点之间线性插入坐标点,a:起点坐标,b:终点坐标,step:步长""" points = [] x1,y1 = a # 起点 x2,y2 = b # 终点 dy = y2 - y1 dx = x2 - x1 angle = math.atan2(dy,dx) distance = int(math.sqrt(dx*dx+dy*dy)) pass class Pen(): def __init__(self,ball): self.ball = ball # 笔可以访问球,以便访问球的属性方法等。 self.screen = ball.screen self.color = GREEN # 初始颜色为绿色 self.thickness = 30 # 笔触大小,实际上是画圆时的半径 self.draw_times = [ 3 for i in range(len(self.ball.backgrounds))] # 每关画的次数为3 def alt_color(self,color): self.color = color def paint(self,previous_point,mouse_pos,): """在ball.background上画圆点""" pass class Ball: def __init__(self,radius,color,position,screen,backgrounds): self.radius = radius self.screen = screen self.backgrounds = backgrounds # 所有的关卡对象 self.level = 0 # 开始关卡 self.background = self.backgrounds[self.level] # 当前背景(关卡) self.level_amounts = len(backgrounds) # 关卡数量 self.screen_width = self.screen.get_width() # 屏幕宽度 self.screen_height = self.screen.get_height() # 屏幕高度 self.image = pygame.Surface((radius*2,radius*2)) # 新建正方形面对象 self.image.set_colorkey(BLACK) # 不渲染颜色为黑色 pass def keypressed_check(self): keys = pygame.key.get_pressed()# 得到按键布尔值表 if keys[K_DOWN] and not self.bumped_green: self.dy += 1 if keys[K_LEFT] and self.bumped_green: self.dx = -2 self.dy = -2 if keys[K_RIGHT] and self.bumped_green: self.dx = 2 self.dy = -2 def update(self): self.rect.move_ip(self.dx,self.dy) self.mission_check() # 过关检测 self.get_outer_ring_point_list() self.check_bumped_pixel() # 像素检测 def get_outer_ring_point_list(self): """得到圆形边缘坐标点,用于像素检测""" xo,yo = self.rect.center self.outer_ring_points = [] pass def draw(self): self.screen.blit(self.image,self.rect) if __name__ == "__main__": RED = (255,0,0,255) GREEN = (0,255,0,255) BLUE = (0,0,255,255) BLACK = (0,0,0,255) MAGENTA = (255,0,255,255) game_title = "过河搭桥_作者:李兴球_www.scratch8.net" width,height = 800,600 pygame.init() screen = pygame.display.set_mode((width,height)) pygame.display.set_caption(game_title) backgrounds = [pygame.image.load(image) for image in glob("backgrounds/*.png")] start_position = (50,height//2-250) ball = Ball(10,MAGENTA,start_position,screen,backgrounds) clock = pygame.time.Clock() running = True start_draw = 0 # 鼠标左键按下标志 pen = Pen(ball) # 新建画笔 while running: if start_draw > 0: start_draw -= 1 for event in pygame.event.get(): if event.type == QUIT: running = False pass clock.tick(30) pygame.quit()
如需要下载完整源代码及素材,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)
发表评论