壁球小游戏制作pygame

前段时间在mooc学习了python游戏的制作,最后的得到这样的而学习成果

pygame框架

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 19 21:34:51 2022

@author: 18705
"""

import pygame,sys
#引入pygame和sys
pygame.init()
screen=pygame.display.set_mode((600,400))
pygame.display.set_caption("Python游戏")
#初始化init()以及设置
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
#获取事件并逐个响应           
    pygame.display.update()
#刷新屏幕

pygame图形绘制

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 20 17:56:44 2022

@author: 18705
"""

import pygame,sys
import pygame.freetype
#from math import pi
import numpy as np

#引入pygame和sys
pygame.init()
screen=pygame.display.set_mode((600,400))
pygame.display.set_caption("Python游戏")
gold=255,251,0
red=pygame.Color('red')
white=255,255,255
green=pygame.Color("green")
#初始化init()以及设置
#r1rect=pygame.draw.rect(screen,gold,(100,100,200,100),5)
#r2rect=pygame.draw.rect(screen,red,(210,210,200,100),0)
e1rect=pygame.draw.ellipse(screen,green,(50,50,500,300),3)
c1rect=pygame.draw.circle(screen,gold,(200,180),30,5)
c2rect=pygame.draw.circle(screen,gold,(400,180),30)
r1rect=pygame.draw.rect(screen,red,(170,130,60,10),3)
r2rect=pygame.draw.rect(screen,red,(370,130,60,10))
plist=[(295,170),(285,250),(260,280),(340,280),(315,250),(305,170)]
l1rect=pygame.draw.lines(screen,gold,True,plist,2)
a1rect=pygame.draw.arc(screen,red,(200,220,200,100),1.4*np.pi,1.9*np.pi,3)
f1=pygame.freetype.Font("C:\Windows\Fonts\HGMH_CNKI.TTF",38)
f1rect=f1.render_to(screen,(200,160),"世界和平",fgcolor=gold,size=50)
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
#获取事件并逐个响应           
    pygame.display.update()
#刷新屏幕

pygame鼠标时间处理

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 20 11:33:53 2022

@author: 18705
"""

import pygame,sys
#引入pygame和sys
pygame.init()
screen=pygame.display.set_mode((600,400))
pygame.display.set_caption("pygame事件处理")
#初始化init()以及设置
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type==pygame.MOUSEMOTION:
            print("[MOUSEMOTION]:",event.pos,event.rel,event.buttons)
        elif event.type==pygame.MOUSEBUTTONDOWN:
            print("[MOUSEBUTTONDOWN]:",event.pos,event.button)
        elif event.type==pygame.MOUSEBUTTONUP:
            print("[MOUSEBUTTONUP]:",event.pos,event.button)
#获取事件并逐个响应           
    pygame.display.update()
#刷新屏幕

成品制作

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 20 17:27:17 2022

@author: 18705
"""

import pygame,sys
pygame.mixer.init()
pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size, pygame.RESIZABLE)  #窗口大小可调

icon = pygame.image.load("D:/pythonnumpy/yxtb3.png")
pygame.display.set_icon(icon)
pygame.display.set_caption("Pygame壁球")
ball = pygame.image.load("D:/pythonnumpy/pengpeng116.png")
ballrect = ball.get_rect()
fps = 300
fclock = pygame.time.Clock()
still = False
bgcolor=pygame.Color("black")
pygame.mixer.music.load("D:/pythonnumpy/pengmusic4.mp3")
pygame.mixer.music.play()
def RGBChannel(a):
    return 0 if a<0 else(255 if a>255 else int(a))
pygame.mixer.music.play(-1)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
            elif event.key == pygame.K_RIGHT:
                speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
            elif event.key == pygame.K_UP:
                speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
            elif event.key == pygame.K_DOWN:
                speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
            elif event.key == pygame.K_ESCAPE:
                pygame.quit()
                sys.exit()
        elif event.type == pygame.VIDEORESIZE:
            size = width, height = event.size[0], event.size[1]
            screen = pygame.display.set_mode(size, pygame.RESIZABLE)
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                still = True#按下鼠标左键,返回1
        elif event.type == pygame.MOUSEBUTTONUP:
            still = False
            if event.button == 1:#按下停止,放开以后就移动到鼠标放开的位置。
                ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
        elif event.type == pygame.MOUSEMOTION:
            if event.buttons[0] == 1:#可以直接拖拽
                ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
    if pygame.display.get_active() and not still:
        ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = - speed[0]
        if ballrect.right > width and ballrect.right + speed[0] > ballrect.right:
            speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]
        if ballrect.bottom > height and ballrect.bottom + speed[1] > ballrect.bottom:
            speed[1] = - speed[1]
    bgcolor.r=RGBChannel(ballrect.left*255/width)
    bgcolor.g=RGBChannel(ballrect.top*255/height)
    bgcolor.b=RGBChannel(min(speed[0],speed[1])*255/max(speed[0],speed[1],1))
    screen.fill(bgcolor)
    screen.blit(ball, ballrect)
    pygame.display.update()
    fclock.tick(fps)

猜你喜欢

转载自blog.csdn.net/m0_57491181/article/details/125536655