从零开始做一个基于pygame引擎的躲闪小游戏(一)-画矩形、画圆、简单的碰撞检测

来源:互联网 发布:python画图pylab 编辑:程序博客网 时间:2024/05/02 04:17

前面我们已经搭建好了pygame开发的环境:http://blog.csdn.net/v_xchen_v/article/details/52698428

1)Step:从在屏幕上画出一个方块开始

import pygamepygame.init()screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([600,480])screen.fill([255,255,255])while True:    pygame.draw.rect(screen,[255,0,0],[250,250,100,30],3)    pygame.display.flip()


import pygame #导入pygame库pygame.init() #模块初始化screen_tltle=pygame.display.set_caption("Hide Game") #设置窗口标题screen =pygame.display.set_mode([600,480]) #建立一个窗口,大小为600*480screen.fill([255,255,255]) #将窗口的背景颜色设置为白色while True: #设置循环的目的是为了不断重复的画方块,以便让我们看清    pygame.draw.rect(screen,[255,0,0],[250,250,100,30],3) #在窗口上画一个方块,颜色为红色[255,0,0]坐标为X=250,Y=250,大小为100*30,线条粗细为3    pygame.display.flip() #将绘制的图形刷新到窗口,如果不写这一条,窗口是不会现实方块的

Step 2)在屏幕上随机位置上生成方块,并让方块向下移动

import pygame,syspygame.init()import randomimport timecubeX=[]cubeY=[]screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([1000,500])screen.fill([100,100,100])while True:    cubeX.append(1000*random.random())    cubeY.append(0)    s=len(cubeX)    for i in range(0,s):        pygame.draw.rect(screen,[255,0,0],[cubeX[i],cubeY[i],100,30],3)        cubeY[i]=cubeY[i]+80        time.sleep(0.1)    pygame.display.update()    screen.fill([100,100,100])    for event in pygame.event.get():        if event.type == pygame.QUIT:            sys.exit()



import pygame,sys #载入pygame库pygame.init()     #初始化import randomimport timecubeX=[] #建立一个数组存放各个方块的X坐标cubeY=[] #建立一个数组存放各个方块的Y坐标screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([1000,500])screen.fill([100,100,100])while True:    cubeX.append(1000*random.random()) #增加一个X坐标,新增的X坐标为0-1000之间的一个随机数    cubeY.append(0)                    #增加一个Y坐标,初始化为0    s=len(cubeX)                       #数组中元素的个数为s    for i in range(0,s):               #0-s循环        pygame.draw.rect(screen,[255,0,0],[cubeX[i],cubeY[i],100,30],3) #画一个方块,坐标为X[i],Y[i]        cubeY[i]=cubeY[i]+80                                            #所有的Y坐标,向下移动80        time.sleep(0.1)                #控制下落速度    pygame.display.update()    screen.fill([100,100,100])    for event in pygame.event.get():            if event.type == pygame.QUIT:  #按左上角的X键关闭程序            sys.exit()

Step 3)画一个圆圈,让圆圈可以随着键盘操作左右移动

import pygame,syspygame.init()import randomimport timefrom pygame.locals import *cubeX=[]cubeY=[]myTx=500screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([1000,500])screen.fill([100,100,100])generate=0.98while True:    if(random.random()>generate):        cubeX.append(1000*random.random())        cubeY.append(0)    s=len(cubeX)    for i in range(0,s):        pygame.draw.rect(screen,[255,0,0],[cubeX[i],cubeY[i],100,30],3)        cubeY[i]=cubeY[i]+2    pygame.display.update()    screen.fill([100,100,100])    pygame.draw.circle(screen,[255,255,255],[int(myTx),400],10)    for event in pygame.event.get():        global myTx        if event.type == KEYDOWN:            if event.key==K_LEFT:                myTx=myTx-10            elif event.key==K_RIGHT:                myTx=myTx+10        if event.type == pygame.QUIT:            sys.exit()

import pygame,syspygame.init()import randomimport timefrom pygame.locals import * #导入pygame本地库,用于捕捉本地中存储的键盘响应listcubeX=[]cubeY=[]myTx=500screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([1000,500])screen.fill([100,100,100])generate=0.98while True:    if(random.random()>generate):        cubeX.append(1000*random.random())        cubeY.append(0)    s=len(cubeX)    for i in range(0,s):        pygame.draw.rect(screen,[255,0,0],[cubeX[i],cubeY[i],100,30],3)        cubeY[i]=cubeY[i]+2    pygame.display.update()    screen.fill([100,100,100])    pygame.draw.circle(screen,[255,255,255],[int(myTx),400],10) #画一个圆圈,X坐标为myTx的值,Y坐标为400    for event in pygame.event.get():        global myTx        if event.type == KEYDOWN:            if event.key==K_LEFT:   #当键盘<-键被按下时,圆圈左移10                myTx=myTx-10            elif event.key==K_RIGHT:#当键盘->被按下时,圆圈右移10                myTx=myTx+10        if event.type == pygame.QUIT:            sys.exit()

Step 4)碰撞检测并显示HP值

import pygame,syspygame.init()import randomfrom pygame.locals import *cubeX=[]cubeY=[]myTx=500generate=0.98HP=100screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([1000,500])screen.fill([100,100,100])myfont=pygame.font.SysFont(None,30)while True:    if(random.random()>generate):        cubeX.append(1000*random.random())        cubeY.append(0)    s=len(cubeX)    for i in range(0,s):        pygame.draw.rect(screen,[255,0,0],[cubeX[i],cubeY[i],100,30],3)        cubeY[i]=cubeY[i]+2    pygame.display.update()    screen.fill([100,100,100])    pygame.draw.circle(screen,[255,255,255],[int(myTx),400],10)    for event in pygame.event.get():        global myTx        if event.type == KEYDOWN:            if event.key==K_LEFT:                myTx=myTx-20            elif event.key==K_RIGHT:                myTx=myTx+20        if event.type == pygame.QUIT:            sys.exit()    for i in range(0,s):        if(myTx<cubeX[i]+100 and myTx>cubeX[i] and 400>cubeY[i] and 400<cubeY[i]+30):            HP=HP-1    HP_str="HP:"+str(HP)    text=myfont.render(HP_str,True,[255,0,0])    screen.blit(text,[20,20])


import pygame,syspygame.init()import randomfrom pygame.locals import *cubeX=[]cubeY=[]myTx=500generate=0.98HP=100screen_tltle=pygame.display.set_caption("Hide Game")screen =pygame.display.set_mode([1000,500])screen.fill([100,100,100])myfont=pygame.font.SysFont(None,30)             #设置字体,字号。None表示默认字体while True:    if(random.random()>generate):        cubeX.append(1000*random.random())        cubeY.append(0)    s=len(cubeX)    for i in range(0,s):        pygame.draw.rect(screen,[255,0,0],[cubeX[i],cubeY[i],100,30],3)        cubeY[i]=cubeY[i]+2    pygame.display.update()    screen.fill([100,100,100])    pygame.draw.circle(screen,[255,255,255],[int(myTx),400],10)    for event in pygame.event.get():        global myTx        if event.type == KEYDOWN:            if event.key==K_LEFT:                myTx=myTx-20            elif event.key==K_RIGHT:                myTx=myTx+20        if event.type == pygame.QUIT:            sys.exit()    for i in range(0,s):        if(myTx<cubeX[i]+100 and myTx>cubeX[i] and 400>cubeY[i] and 400<cubeY[i]+30):            HP=HP-1    HP_str="HP:"+str(HP)                        #定义一个字符串,它的值为:HP:HP值    text=myfont.render(HP_str,True,[255,0,0])   #显示的文本内容,是否开启抗锯齿,字体颜色,第四个参数是背景颜色,不设表示透明    screen.blit(text,[20,20])                   #文字表示在屏幕上的文本内容和位置


0 0
原创粉丝点击