用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资源。)

