一、桌球小游戏
-
素材
-
球
-
球桌
-
-
代码
import pygame, sys,math from pygame.locals import * pygame.init() # 创建一个窗口,大小为 800 * 600 canvas = pygame.display.set_mode((845, 467)) pygame.display.set_caption('桌球小游戏') # 加载图片 bg = pygame.image.load("image/desk.png") enemy = pygame.image.load("image/ball.png") # 定义母球参数 cueX = cueY = 0 # 母球初始坐标 cueFollowMouse = True # 母球是否随着鼠标走 minX = 30 maxX = 795 minY = 36 maxY = 405 # 鼠标参数 countMouse = 0 # 运动参数 radian = 3.14 / 3 speed = 5 while True: # 把图画到窗口上 canvas.blit(bg,(0,0)) canvas.blit(enemy,(cueX, cueY)) # 获取事件列表 for e in pygame.event.get(): type = e.type # 判断事件类型 if type == QUIT: pygame.quit() # 窗口退出 sys.exit() # 关闭程序 # 鼠标按下事件 if type == MOUSEBUTTONDOWN: cueFollowMouse = False if countMouse != 0: mouse = pygame.mouse.get_pos() countMouse += 1 # 监听鼠标移动事件 if type == MOUSEMOTION: if cueFollowMouse: cueX,cueY = pygame.mouse.get_pos() cueX -= 15 cueY -= 15 if countMouse > 1: if cueY >= maxY or cueY <= minY: radian = -radian if cueX >= maxX or cueX <= minX: radian = 3.14 - radian cueX += speed * math.cos(radian) cueY += speed * math.sin(radian) # 持续刷新屏幕 pygame.display.update() # 让程序延迟 10 毫秒 pygame.time.delay(10)
二、玻璃球
-
素材
-
背景
-
球
-
模板
-
-
代码
import pygame, sys from pygame.locals import * pygame.init() # 创建一个窗口,大小为 540 * 700 canvas = pygame.display.set_mode((360,640)) pygame.display.set_caption('桌球小游戏') # 加载图片 back = pygame.image.load("image/back.jpg") board = pygame.image.load("image/board.png") ball = pygame.image.load("image/ball.png") # 位置 ballC = [165,0] boarC = [130,580] # 小球 motX = motY = 5 isMot = True # 成绩 achie = 0 while True: # 把图画到窗口上 canvas.blit(back,(0,0)) canvas.blit(board,boarC) canvas.blit(ball,ballC) # 获取事件列表 for e in pygame.event.get(): type = e.type # 判断事件类型 if type == QUIT: pygame.quit() # 窗口退出 sys.exit() # 关闭程序 # 监听鼠标移动事件 if type == MOUSEMOTION: coor = pygame.mouse.get_pos() boarC[0] = coor[0] boarC[0] -= 50 if coor[0] <= 50 : boarC[0] = 0 if coor[0] >= 310: boarC[0] = 260 # 小球动起来 if isMot : ballC[0] += motX ballC[1] += motY if ballC[0] >= 330 or ballC[0] <= 0 : achie += 1 motX = -motX if ballC[1] <= 0 : motY = -motY if ballC[1] == 550: ran = range(boarC[0],boarC[0]+100) if ballC[0] in ran: motY = -motY if ballC[1] > 550: isMot = False ballC = [165, 0] print("游戏结束,成绩为",end=":") print(achie) # 持续刷新屏幕 pygame.display.update() # 让程序延迟 10 毫秒 pygame.time.delay(10)