pygameの(2)ゲームプログラミングと爆発、二爆弾 - インシデントレスポンス

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/suoyue_py/article/details/99172006

pygameのエピソード我々は唯一の移動だけで完全なインタフェースを参照してください、それがゲームとみなすことはできません。プレイヤーは感謝し、最も「つまらない」に参加することができない場合にのみ、ゲームの場合、プレイヤーが参加できるように、コードに復権見ている、、、もっと良いです。
プログラムのレンダリング:
ここに画像を挿入説明
QUITイベントを開始pygameのプログラムを終了するために使用され、そして今再びKEYDOWN、keyUpイベント、MOUSEBUTTONDOWNを使用してきた、MOUSEBUTTONUPイベントは、プレイヤーが操作することを可能にする、プログラムコードを完璧に使用しています。
イベントリスト:
ここに画像を挿入説明
完全なコードの画像素材を追加するためのコアコードの分析及び梱包論文が最後を参照してください。

SY1:

ゲームのメインループで追加KEYDOWN文字を制御するために、キーボードの押下イベントを動き回る
K_LEFT:キーボードの矢印ボタン
K_RIGHTを:キーボードは、右矢印
K_UPを:キーボードの矢印キー
K_DOWNを:キーボードは、キーを押した矢印

#键盘控制事件:上下左右移动  
if event.type == KEYDOWN:       
    if event.key == K_LEFT:
        SPEED = [-2,0]
    elif event.key == K_RIGHT:
        SPEED = [2,0]
    elif event.key == K_UP:
        SPEED = [0,-2]
    elif event.key == K_DOWN:
        SPEED = [0,2]

今、キーボードの矢印キーは、文字画像の移動方向を操作するために使用することができるが、ステアリングを制御することができない、SY3垂直transfore画像、横チルト・ズーム動作を制御するために使用される方法。

SY2:

在游戏主循环添加"MOUSEBUTTONDOWN"和"MOUSEKEYBUTTONUP"来设定鼠标按住时图像角色进行倍速运动,松开鼠标恢复原速(此处若要多次加速可用一个循环操作)

#按住鼠标进行加速运动,松开鼠标恢复原速
if event.type==MOUSEBUTTONDOWN:
    if SPEED[0] != 0:
        SPEED[0] *= 2
    else:
        SPEED[1] *= 2
elif event.type==MOUSEBUTTONUP:
    if SPEED[0] != 0:
        SPEED[0] /= 2
    else:
        SPEED[1] /= 2

由于按下键盘方向键会改变SPEED的参数(可能出现零),对此加速时需要做判断。

SY3:

transfore方法一览表:
ここに画像を挿入説明
flip方法:
加载图像后设置图像的翻转情况,pygame.transform.flip(Surface,xbool,ybool) - > Surface 包含三个参数,
参数1:返回surface对象;
参数2:设置是否水平翻转;
参数3:设置是否垂直翻转

pygame首发代码处有备注

ori_role = pygame.image.load("role.png")    #加载原始图像
role = pygame.transform.flip(ori_role,True,False)    #翻转图像

设置左右翻转情况并判断角色的头朝向

face_left = ori_role
face_right = role
walk_head = True       #判断头的朝向

smoothscale方法:
比= 1.0を加え、ゲームループで増幅し、縮小キーとその機能:画像のスケーリング率を設定します。
K_EQUALS:キーボードのキー、左上+ =左下
K_MINUS:キーボード左上-左下-ボタン
K_SPACE:スペースバー
pygame.transform.smoothscale(表面(幅、高さ)、DestSurface =なし) - >表面三つのパラメータ、
パラメータ1:データは、物体の表面を返し、
パラメータ2:サイズ(幅、高さ);
パラメータ3:モード
スケール方法も可能であり、同一の基本的なパラメータを使用し、ここで使用されるが、表示画像が拡大され少し偏差

#放大、缩小的角色(=\-),空格键恢复原始尺寸
if (event.key == K_EQUALS) or (event.key == K_MINUS) or (event.key == K_SPACE):
    #最大只能:放大一倍,缩小50%
    if event.key == K_EQUALS and ratio < 2.0:
        ratio += 0.1
    if event.key == K_MINUS and ratio > 0.5:
        ratio -= 0.1
    if event.key == K_SPACE:
        ratio = 1.0       
    #转化后的赋值给role
    role = pygame.transform.smoothscale(ori_role,(int(ori_position.width*ratio),int(ori_position.height*ratio)))     #数据,大小(宽度,高度),模式                    
    face_left = role
    face_right = pygame.transform.flip(role,True,False)
    position.size=(int(ori_position.width*ratio), int(ori_position.height*ratio))   #改变rect对象尺寸使其不出界

注:画像の拡大及び縮小処理の完了についてのさらなる詳細は必要後:拡大または縮小された画像内の文字の画像に向かってヘッドを自動的に反転、これを設定する第1の方向に応じて決定される必要が生成され、詳細は以下を参照コード:

import pygame       
from pygame.locals import*      
from sys import exit

pygame.init()       #初始化pygame
pygame.display.set_caption("锁钥 の Hello World !!!")       #设置窗口标题

width,height = 640,480    
SPEED = [2,1]      #定义速度
background_image = 'bg.jpg'   #指定背景图像文件名称

screen = pygame.display.set_mode((width,height),0,32)       #创建窗口
background = pygame.image.load(background_image).convert()     #加载背景图

ori_role = pygame.image.load("role.png")    #加载原始图像
role = pygame.transform.flip(ori_role,True,False)    #翻转图像
ori_position = position = ori_role.get_rect()       #获得图像的原始位置矩形和位置矩形

face_left = ori_role
face_right = role
walk_head = True       #判断头的朝向
ratio = 1.0         #设置图像放大缩小的比率

#游戏主循环
while True:     
    for event in pygame.event.get():
        #接收到退出事件后退出程序
        if event.type == pygame.QUIT:      
            exit()

        #键盘控制事件:上下左右移动  
        if event.type == KEYDOWN:       
            if event.key == K_LEFT:
                role = face_left
                SPEED = [-2,0]
            elif event.key == K_RIGHT:
                role = face_right
                SPEED = [2,0]
            elif event.key == K_UP:
                SPEED = [0,-2]
            elif event.key == K_DOWN:
                SPEED = [0,2]
            
            #放大、缩小的角色(=\-),空格键恢复原始尺寸
            if (event.key == K_EQUALS) or (event.key == K_MINUS) or (event.key == K_SPACE):
                #最大只能:放大一倍,缩小50%
                if event.key == K_EQUALS and ratio < 2.0:
                    ratio += 0.1
                if event.key == K_MINUS and ratio > 0.5:
                    ratio -= 0.1
                if event.key == K_SPACE:
                    ratio = 1.0
                    
                #转化后的赋值给role
                role = pygame.transform.smoothscale(ori_role,(int(ori_position.width*ratio),int(ori_position.height*ratio)))     #数据,大小(宽度,高度),模式                    
                face_left = role
                face_right = pygame.transform.flip(role,True,False)
                position.size=(int(ori_position.width*ratio), int(ori_position.height*ratio))   #改变rect对象尺寸使其不出界

                if walk_head:
                    role = face_right
                else:
                    role = face_left
        
        #按住鼠标进行加速运动,松开鼠标恢复原速
        if event.type==MOUSEBUTTONDOWN:
            if SPEED[0] != 0:
                SPEED[0] *= 2
            else:
                SPEED[1] *= 2
        elif event.type==MOUSEBUTTONUP:
            if SPEED[0] != 0:
                SPEED[0] /= 2
            else:
                SPEED[1] /= 2
            
    #判断运动方向
    if SPEED[0]<0:
        walk_head = False
    if SPEED[0]>0:
        walk_head = True

    #将图像限制在屏幕中运动
    if position.left<0 or position.right>width:     #左右边界判断
        role = pygame.transform.flip(role,True,False) 
        SPEED[0] = -SPEED[0]    #反方向移动
    if position.top<0 or position.bottom>height:    #上下边界判断
        SPEED[1] = -SPEED[1]
        
    position = position.move(SPEED)     #移动图像        
    screen.blit(background,(0,0))   #将背景图画上
    screen.blit(role,position)      #更新图像
    pygame.display.flip()    #更新界面
    pygame.time.delay(5)   #延迟10毫秒

タイムリーな更新マイクロ手紙公衆に、「注意を払ってくださいバリー・ロックおよびキー、」バック公益返信「pygameの第二弾、」フェッチソースコード、実行可能ファイルの写真とパッケージングを

知識の前面を取り付けます
ピットのPythonに
pygameの最初の爆弾

おすすめ

転載: blog.csdn.net/suoyue_py/article/details/99172006