Python游戏编程入门,让你秒变电脑大神!

it2023-03-20  78

初识pygame:pie游戏 pygame游戏库使得如下功能成为可能:绘制图形、获取用户输入、执行动画 以及使用定时器让游戏按照稳定的帧速率运行。 使用pygame库; 以一定字体打印文本; 使用循环来重复动作; 绘制圆、矩形、线条和户型; 创建pie游戏; 从哪里获得pygame库:http://www.pygame.org/download.shtml 我现在使用的Python2.7和pygame1.9 书中使用的环境是Python3.2和pygame1.9 现在不在Python3的环境下安装上pip工具导致环境无法一致 pygame库的初始化工作:     import pygame     from pygame.locals import *     pygame.init() 创建一个(600,500)大小的屏幕     screen=pygame.display.set_mode((600,500))     screen同时被赋值为<Surface(600x500x32 SW)>     这是一个有用的值,所以用screen变量存储。 打印文本     1、创建字体对象     myfont=pygame.font.Font(None,60)     None:使用默认字体     60:字体大小     2、创建一个可以使用screen.blit()绘制的平面     textimage=myfont.render("Hello Python",True,(255,255,255))     render需要三个参数,需要被显示的字符串、是否抗锯齿True/False、颜色     3、将textimage交给screen.blit()进行绘制     screen.blit(textimage,(100,100))     screen.blit()需要两个参数,绘制的对象及其(左上角顶点)坐标 背景填充     screen.fill((0,0,0))     screen.fill()需要给出背景颜色 刷新显示     screen.display.update()     一般配合while循环使用 while循环     通过while循环可以进行事件处理和持续的屏幕刷新     while True:         for event in pygame.event.get():             if event.type in (QUIT,KEYDOWN):                 sys.exit()         screen.display.update() 绘制圆形     pygame.draw.circle(screen,color,position,radius,width)     color    (0,0,0)给定颜色     radius圆半径     position     (0,0)给定圆心坐标     width线条宽度 绘制矩形     pygame.draw.rect(screen,color,position,width)     position      (pos_x,pos_y,100,100)给定左上角顶点的坐标、长和宽 绘制线条     pygame.draw.line(screen,color,(0,0),(100,100),width)     (0,0)(100,100)负责给定线段的两个端点 绘制弧形     start_angle=math.radians(0)     end_angle=math.radians(90)     position=x-radius,y-radius,radius*2,radius*2     #x,y表示弧形所在的圆的圆心坐标,radius表示半径     pygame.draw.arc(screen,color,position,start_angle,end_angle,width)     start_angle起始角度 指向正右侧的半径开始逆时针旋转就是0到360     end_angle结束角度      两段值得学习的示例 1、绘制移动矩形 #!/usr/bin/python import sys import random from random import randint import pygame from pygame import * pygame.init() screen=pygame.display.set_mode((600,500)) pygame.display.set_caption("Drawing Rectangles") pos_x=300 pos_y=250 vel_x=2 vel_y=1 color=100,100,100             while True:     for event in pygame.event.get():         if event.type in (QUIT,KEYDOWN):             sys.exit()     screen.fill((0,0,200))          pos_x +=vel_x     pos_y +=vel_y     if pos_x>500 or pos_x<0:         vel_x=-vel_x         rand1=randint(0,255)         rand2=randint(0,255)         rand3=randint(0,255)         color=rand1,rand2,rand3     if pos_y>400 or pos_y<0:         vel_y=-vel_y         rand1=randint(0,255)         rand2=randint(0,255)         rand3=randint(0,255)         color=rand1,rand2,rand3     width=0     pos=pos_x,pos_y,100,100     pygame.draw.rect(screen,color,pos,width)     pygame.display.update() 2、pie游戏 #!/usr/bin/python #init import sys import math import pygame from pygame.locals import * pygame.init() screen=pygame.display.set_mode((600,500)) pygame.display.set_caption("The Pie Game-Press 1,2,3,4") myfont=pygame.font.Font(None,60) color=200,80,60 width=4 x=300 y=250 radius=200 position=x-radius,y-radius,radius*2,radius*2 piece1=False piece2=False piece3=False piece4=False while True:     for event in pygame.event.get():         if event.type==QUIT:             sys.exit()         elif event.type==KEYUP:             if event.key==pygame.K_ESCAPE:                 sys.exit()             elif event.key==pygame.K_1:                 piece1=True             elif event.key==pygame.K_2:                 piece2=True             elif event.key==pygame.K_3:                 piece3=True             elif event.key==pygame.K_4:                 piece4=True     screen.fill((0,0,200))     #draw the four numbers     textimage1=myfont.render("1",True,color)     screen.blit(textimage1,(x+radius/2-20,y-radius/2))         textimage2=myfont.render("2",True,color)     screen.blit(textimage2,(x-radius/2,y-radius/2))     textimage3=myfont.render("3",True,color)     screen.blit(textimage3,(x-radius/2,y+radius/2-20))     textimage4=myfont.render("4",True,color)     screen.blit(textimage4,(x+radius/2-20,y+radius/2-20))     #draw arc,line     if piece1:         start_angle=math.radians(0)         end_angle=math.radians(90)         pygame.draw.arc(screen,color,position,start_angle,end_angle,width)         pygame.draw.line(screen,color,(x,y),(x+radius,y),width)         pygame.draw.line(screen,color,(x,y),(x,y-radius),width)     if piece2:             start_angle=math.radians(90)         end_angle=math.radians(180)         pygame.draw.arc(screen,color,position,start_angle,end_angle,width)         pygame.draw.line(screen,color,(x,y),(x,y-radius),width)         pygame.draw.line(screen,color,(x,y),(x-radius,y),width)     if piece3:         start_angle=math.radians(180)         end_angle=math.radians(270)         pygame.draw.arc(screen,color,position,start_angle,end_angle,width)         pygame.draw.line(screen,color,(x,y),(x-radius,y),width)         pygame.draw.line(screen,color,(x,y),(x,y+radius),width)     if piece4:         start_angle=math.radians(270)         end_angle=math.radians(360)         pygame.draw.arc(screen,color,position,start_angle,end_angle,width)         pygame.draw.line(screen,color,(x,y),(x,y+radius),width)         pygame.draw.line(screen,color,(x,y),(x+radius,y),width)              #if success,display green     if piece1 and piece2 and piece3 and piece4:         color=0,255,0     pygame.display.update() 挑战 1、绘制椭圆 #!/usr/bin/python import sys import pygame from pygame.locals import * pygame.init() screen=pygame.display.set_mode((600,500)) pygame.display.set_caption("Drawing Ellipse") while True:         for event in pygame.event.get():                 if event.type in (QUIT,KEYDOWN):                         sys.exit()         screen.fill((0,255,0))         color=255,0,255         position=100,100,400,300         width=8         pygame.draw.ellipse(screen,color,position,width)         pygame.display.update() 这个题目就是让你认识一下pygame.draw.ellipse()函数的相关使用。 该函数和pygame.draw.rect()函数使用方式十分相似。 2、随机的绘制1000个线条 #!/usr/bin/python import random from random import randint import sys import pygame from pygame import * pygame.init() screen=pygame.display.set_mode((800,600)) pygame.display.set_caption("Drawing Line") screen.fill((0,80,0)) color=100,255,200 width=2 for i in range(1,1001):         pygame.draw.line(screen,color,(randint(0,800),randint(0,600)),(randint(0,800),randint(0,600)),width) while True:         for event in pygame.event.get():                 if event.type in (QUIT,KEYDOWN):                         sys.exit()         pygame.display.update() 通过这个题目理解了如果绘制图形和刷新显示都在循环中时,while True循环每次都会绘 制图形并刷新显示。 调用pygame模块中的randint()函数。 而在while True循环外绘制图形,则图形绘制完成之后保持不变。刷新显示的是一个已经绘制好 的图形。如果大家对Python感兴趣的话,可以加一下我们的学习交流抠抠群哦:649,825,285,免费领取一套学习资料和视频课程哟~ 3、修改矩形程序,使矩形碰到屏幕边界是,矩形会改变颜色 #!/usr/bin/python import sys import random from random import randint import pygame from pygame import * pygame.init() screen=pygame.display.set_mode((600,500)) pygame.display.set_caption("Drawing Rectangles") pos_x=300 pos_y=250 vel_x=2 vel_y=1 rand1=randint(0,255) rand2=randint(0,255) rand3=randint(0,255) color=rand1,rand2,rand3             while True:     for event in pygame.event.get():         if event.type in (QUIT,KEYDOWN):             sys.exit()     screen.fill((0,0,200))          pos_x +=vel_x     pos_y +=vel_y     if pos_x>500 or pos_x<0:         vel_x=-vel_x         rand1=randint(0,255)         rand2=randint(0,255)         rand3=randint(0,255)         color=rand1,rand2,rand3     if pos_y>400 or pos_y<0:         vel_y=-vel_y         rand1=randint(0,255)         rand2=randint(0,255)         rand3=randint(0,255)         color=rand1,rand2,rand3     width=0     pos=pos_x,pos_y,100,100     pygame.draw.rect(screen,color,pos,width)     pygame.display.update() 这里需要用到random模块。在每次碰到屏幕边界时,不仅改变矩形的运动方向,而且使用随机数改变矩形的颜色。 也可以先将color设置为定值,可以少写三行代码。

最新回复(0)