1.前言
很多人学语言就是想做出来一个小游戏,但是你会发现,初学者一般学习的是输入输出,还没涉及到显示屏上的窗口图片游戏。如果你把基础已经学好了,你就可以开始做一些游戏了。做游戏需要用到一些第三方库。就看你为了做出来什么样的游戏。这篇文章我会带你们来学习一下pygame入门.
2.框架
如果你之前学过C++,你一定知道什么叫做框架看看我做的《c++入门和Python入门》https://blog.csdn.net/pythonwyw123321/article/details/134345913?spm=1001.2014.3001.5502
框架代码:
import pygame,sys
pygame.init()
pygame.display.set_caption('') #设置窗口名称
s = pygame.display.set_mode((800,600)) #设置窗口大小 ,S是窗口
while True: #让窗口一直出现 ,就要用到while循环
s.fill((255,255,255)) #设置背景颜色 ,格式为: 窗口名称.fill(颜色元组)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() #结束整个程序
pygame.display.update()
pygame.time.Clock().tick(20)
执行这些代码会有一个白色的窗口显示在你的面前,你点X就可以把它关闭.
3.青铜玩法
把背景颜色换一下,变成随机数.
import pygame,sys,random as r
pygame.init()
pygame.display.set_caption('') #设置窗口名称
s = pygame.display.set_mode((800,600)) #设置窗口大小 ,S是窗口
while True: #让窗口一直出现 ,就要用到while循环
s.fill((r.randint(0,255),r.randint(0,255),r.randint(0,255))) #设置背景颜色 ,格式为: 窗口名称.fill(颜色元组)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() #结束整个程序
pygame.display.update()
pygame.time.Clock().tick(20)
啊!要把我的眼睛闪瞎了 .
4.白银玩法
教你怎么导入图片.
在循环的前面先写一些代码,导入一下照片.
变量名 = pygame.image.load("路径")
在循环里面显示一下图片.
窗口名.blit(变量名,(x,y))
就像这样
import pygame,sys
pygame.init()
pygame.display.set_caption('') #设置窗口名称
s = pygame.display.set_mode((800,600)) #设置窗口大小 ,S是窗口
a = pygame.image.load("a.png")
while True: #让窗口一直出现 ,就要用到while循环
s.fill((255,255,255)) #设置背景颜色 ,格式为: 窗口名称.fill(颜色元组)
s.blit(a,(0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() #结束整个程序
pygame.display.update()
pygame.time.Clock().tick(20)
然后我们让图片跟着我们的鼠标移动,获取鼠标的xy坐标.
pygame.mouse.get_pos() -->这个是一个元组像这样(0,0)
把s.blit(a,(0,0))改成s.blit(a,pygame.mouse.get_pos())
这样图片就可以跟着鼠标移动了.
代码:
import pygame,sys
pygame.init()
pygame.display.set_caption('') #设置窗口名称
s = pygame.display.set_mode((800,600)) #设置窗口大小 ,S是窗口
a = pygame.image.load("a.png")
while True: #让窗口一直出现 ,就要用到while循环
s.fill((255,255,255)) #设置背景颜色 ,格式为: 窗口名称.fill(颜色元组)
s.blit(a,pygame.mouse.get_pos())
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() #结束整个程序
pygame.display.update()
pygame.time.Clock().tick(20)
5.黄金玩法
加上了碰撞检测
名字 = pygame.Rect(x, y, 宽, 高)
名字2 = pygame.Rect(x, y, 宽, 高)
if 名字.colliderect(名字2):
#如果名字一和名字二的地方发生了碰撞,接下来要怎么做.
这个是鼠标的判断
pygame.mouse.get_pressed()
它是一个列表,零号位是左键按下判断,一号位是滚轮按下判断,二号位是右键按下判断.
向使这样的一个列表:[True,False,False]
展示代码(图片需要自己配,1个叫做13.png的图片,这是一个开关灯的程序,用鼠标点击左上角)
import pygame,sys,time
pygame.init()
pygame.display.set_caption('跳跳小恐龙') #设置窗口名称
s = pygame.display.set_mode((800,600)) #设置窗口大小 ,S是窗口
a = pygame.image.load("13.png")
a = pygame.transform.scale(a,(100,100))
b = pygame.image.load("13.png")
b = pygame.transform.scale(b,(50,50))
j = 0 #0是关 1是开
while True: #让窗口一直出现 ,就要用到while循环
m = pygame.mouse.get_pos()
hit = pygame.Rect(0, 0, 100, 100)
hit2 = pygame.Rect(m[0], m[1], 50, 50)
if hit.colliderect(hit2) and pygame.mouse.get_pressed()[0]:
if j == 0:
j = 1
elif j == 1:
j = 0
time.sleep(0.1)
if j == 1:
s.fill((255,255,255)) #设置背景颜色 ,格式为: 窗口名称.fill(颜色元组)
if j == 0:
s.fill((0, 0, 0)) # 设置背景颜色 ,格式为: 窗口名称.fill(颜色元组)
s.blit(a,(0,0))
s.blit(b,m)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() #结束整个程序
pygame.display.update()
pygame.time.Clock().tick(20)
pygame.transform.scale(a,(100,100))这个代码是控制图片大小的,我把这个变量名叫做a的图片变成了100乘100的.
6.总结
那些好玩的游戏都是用这些基础语句做的,组合一下就可以变成一个小游戏了.
但是最好用精灵类.判断碰撞更好一些.