Some time ago, I learned the production of python games in mooc, and finally got such learning results
pygame framework
# -*- 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 graphics drawing
# -*- 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 mouse time processing
# -*- 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()
#刷新屏幕
Finished product
# -*- 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)