python キャラクタをひょこひょこ動かす

python キャラクタをひょこひょこ動かすコードです
←や→キーで少し左右に動きます

```py
import pygame
from pygame.locals import *
import sys
def main():
    pygame.init()                                 # Pygameの初期化
    screen = pygame.display.set_mode((800, 600))  # 800*600の画面
    px=120
    py=100
    ph=99
    pw=99
    gMap = pygame.image.load("hito.png").convert_alpha()   #勇者　50x50
    ct=0
    ck = pygame.time.Clock()
    while True:
        ck.tick(30) #1秒間で30フレームになるように33msecのwait
        screen.fill((255,255,255)) 
        ct+=1
        #n1=ct%4
        n1=int(ct/5)%4
        if n1 == 0:
            screen.blit(gMap ,(px,py),(0,0,pw,ph))
        elif n1 == 1:
            screen.blit(gMap ,(px,py),(101,0,pw,ph))
        elif n1 == 2:
            screen.blit(gMap ,(px,py),(1,101,pw,ph))
        elif n1 == 3:
            pygame.transform.rotate(gMap, 30)
            screen.blit(gMap ,(px,py),(101,101,pw,ph))

        pygame.display.update()                                         # 画面更新
        # イベント処理
        for event in pygame.event.get():  # イベントキューからキーボードやマウスの動きを取得
            if event.type == QUIT:        # 閉じるボタンが押されたら終了
                pygame.quit()             # Pygameの終了(ないと終われない)
                sys.exit()                # 終了（ないとエラーで終了することになる）
            elif event. type == KEYDOWN: 
                if event.key==K_LEFT:
                  px -=5#横方向の速度
                elif event.key==K_RIGHT:
                  px +=5#横方向の速度

if __name__ == "__main__":
    main()
```

画像
![hito.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411052/7b4301e7-f011-89cf-133a-b067dcefec96.png)

#### 動作環境
Python3以上とpygameが必要です
pygameがない場合、
``pip install pygame``
でインストールしてください

#### 起動方法
適当な場所にコードと画像を保存します。
ファイル名は適当でいいですが、よくわからない人はとりあえず　"bg.py" という名で、
画像はコードと同じフォルダに"hito.png"という名で保存してください。
``python bg.py``
で動きます。


#### 縄跳びっぽ動き
上矢印キーで二重跳び、下矢印キーでもどります

```py
import pygame
from pygame.locals import *
import sys
def main():
    pygame.init()                                 # Pygameの初期化
    screen = pygame.display.set_mode((800, 600))  # 800*600の画面
    px=120
    py=100
    ph=95
    pw=95
    stx=4
    sty=4

    gMap = pygame.image.load("hito.png").convert_alpha()   #勇者　50x50
    ct=0
    ck = pygame.time.Clock()

    fg=0

    while True:
        ck.tick(30) #1秒間で30フレームになるように33msecのwait
        screen.fill((255,255,255)) 
        ct+=1

        if fg==0:
            n1=int(ct/5)%2
            if n1 == 0:
                screen.blit(gMap ,(px,py),(stx,sty,pw,ph))
            elif n1 == 1:
                screen.blit(gMap ,(px,py),(100+stx,100+sty,pw,ph))

        if fg==1:
            n1=int(ct/5)%4
            if n1 == 0:
                screen.blit(gMap ,(px,py),(stx,sty,pw,ph))
            elif n1 == 1:
                screen.blit(gMap ,(px-2,py-14),(100+stx,sty,pw,ph))
            elif n1 == 2:
                screen.blit(gMap ,(px-2,py-14),(stx,100+sty,pw,ph))
            elif n1 == 3:
                screen.blit(gMap ,(px,py),(100+stx,100+sty,pw,ph))


        pygame.display.update()                                         # 画面更新
        # イベント処理
        for event in pygame.event.get():  # イベントキューからキーボードやマウスの動きを取得
            if event.type == QUIT:        # 閉じるボタンが押されたら終了
                pygame.quit()             # Pygameの終了(ないと終われない)
                sys.exit()                # 終了（ないとエラーで終了することになる）
            elif event. type == KEYDOWN: 
                if event.key==K_LEFT:
                  px -=5 #横方向の速度
                elif event.key==K_RIGHT:
                  px +=5 #横方向の速度
                elif event.key==K_UP:
                  fg = 1 #横方向の速度
                elif event.key==K_DOWN:
                  fg = 0 #横方向の速度

if __name__ == "__main__":
    main()
```

#### 縄跳
画像を修正しました
![hito.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411052/56b12fc6-075e-3e10-9801-7a1ed91e0707.png)

雨つぶにあたるとhpが削られていきます
遊び方：左右キーで左右、もう一度押すとスピードアップします



```py

import pygame
from pygame.locals import *
import sys
import random

class Rain():
    def __init__(self):
        self.rx=random.randint(1,800)
        self.ry=random.randint(1,100)
        self.rvy= 0
        self.ray= 1
        self.isStart=False
        self.gMap = pygame.image.load("hito.png").convert_alpha()   #勇者　50x50
        
    def update(self,px,py) :
        hit=0
        r=random.randint(1,100)
        if r==3:
            self.isStart=True
        if self.isStart:    
            self.rvy+=self.ray
            self.ry+=self.rvy
            if self.ry>800:
                self.ry=30
                self.rvy=0
                self.isStart=False
            if px<self.rx<px+100 and py<self.ry<py+100:
                #print("hit")
                hit=1
                self.isStart=False
        return hit
    def draw(self,screen):
        if self.isStart:    
            screen.blit(self.gMap ,(self.rx,self.ry),(3,203,10,10))
        

def main():
    pygame.init()                                 # Pygameの初期化
    screen = pygame.display.set_mode((800, 500))  # 800*600の画面
    px=40
    py=300
    ph=95
    pw=95
    pv=2
    php=100
    gMap = pygame.image.load("hito.png").convert_alpha()   #勇者　50x50
    ct=0
    ck = pygame.time.Clock()
    rainNum=15
    Rs=[]
    for i in range(rainNum):
        R=Rain()
        Rs.append(R) 
    while True:
        ck.tick(30) #1秒間で30フレームになるように33msecのwait
        screen.fill((255,255,255)) 
        for R in Rs:
            hit = R.update(px,py) 
            R.draw(screen)
            if hit==1:
                php-=1
        print(php)        
        px+=pv
        ct+=1
        n1=int(ct/5)%4
        if pv<0:
            if n1 == 0:
                screen.blit(gMap ,(px,py),(3,3,pw,ph))
            elif n1 == 1:
                screen.blit(gMap ,(px,py),(103,3,pw,ph))
            elif n1 == 2:
                screen.blit(gMap ,(px,py),(3,103,pw,ph))
            elif n1 == 3:
                screen.blit(gMap ,(px,py),(103,103,pw,ph))
        else:
            if n1 == 3:
                screen.blit(gMap ,(px,py),(203,3,pw,ph))
            elif n1 == 2:
                screen.blit(gMap ,(px,py),(303,3,pw,ph))
            elif n1 == 1:
                screen.blit(gMap ,(px,py),(203,103,pw,ph))
            elif n1 == 0:
                screen.blit(gMap ,(px,py),(303,103,pw,ph))

        pygame.display.update()                                         # 画面更新
        # イベント処理
        for event in pygame.event.get():  # イベントキューからキーボードやマウスの動きを取得
            if event.type == QUIT:        # 閉じるボタンが押されたら終了
                pygame.quit()             # Pygameの終了(ないと終われない)
                sys.exit()                # 終了（ないとエラーで終了することになる）
            elif event. type == KEYDOWN: 
                if event.key==K_LEFT:
                  #print("l")  
                    if pv >0: 
                      pv =-2 
                    else:
                      pv = -5
                elif event.key==K_RIGHT:
                    if pv <0:
                        pv=2
                    else:    
                        pv =5 

if __name__ == "__main__":
    main()