pygameでRPGをつくってみる１０


[記事全体の目次へ移動](https://qiita.com/hijpa/items/056acaa13e935590fdc2)

# GIF

<details><summary>ここをクリックしてください</summary>

![無題の動画 ‐ Clipchampで作成 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3874121/b78aa6bc-7e25-c378-3545-4a0559338a60.gif)

</details>


# 選んで消す

アイテムを選んで消します。
ダウンキーやアップキーで選んで、Zキーで消します。
<details><summary>ここをクリックしてください</summary>

コードを動かす前に、まずはフォントファイルの準備が必要です。

pygameでは日本語がサポートされてません。日本語でテキストを表示するには、.ttfファイルが必要です。.pngファイルだと自分でコードを書かないとダメです。

[一般社団法人文字情報技術促進協議会(ここから、フォントファイルをダウンロード)](https://moji.or.jp/ipafont/ipaex00301/)


![スクリーンショット (693).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3874121/571a695e-4100-6ca6-643e-3893303754ed.png)


       
Windowsでパスをそのまま貼り付けるとエラーが出るので、""(ダブルクォーテーション)の前にrをつけましょう。(r"")
エラーの原因がエラー文が指し示すのとは別の行のこともあります。

```python:
import pygame
from pygame.locals import *
import sys

pygame.init()
screen = pygame.display.set_mode((320,320))
#ここにフォントのパスを貼り付ける
font = pygame.font.Font(パス, 30)
list = ["やくそう","せいすい"]
arrow1 = "→"
arrow2 = ""
message = list[0]
message2 = list[1]
a = 0
action_number = 0
clock = pygame.time.Clock()
running = True
while running:
    clock.tick(60)
    screen.fill((0, 0, 255))  # 画面を青色に塗りつぶし
    text = font.render(arrow1 + message, True, (255,255,255))
    text2 = font.render(arrow2 + message2, True, (255,255,255))
    if 1 <= len(list):
        screen.blit(text, (90, 105))
    if 2 <= len(list):
        screen.blit(text2, (90, 185))
    pygame.display.update()  # 画面を更新
              
    # イベント処理
    for event in pygame.event.get():
        if event.type == QUIT:  # 閉じるボタンが押されたら終了
            pygame.quit()  # Pygameの終了(画面閉じられる)
            sys.exit()
        elif event.type == KEYDOWN and event.key == K_UP:
            if 2 <= len(list):
                if action_number == 0:
                    arrow1 = ""
                    arrow2 = "→"
                    action_number = 1
                
                else:
                    arrow1 = "→"
                    arrow2 = ""
                    action_number = 0
                    
        elif event.type == KEYDOWN and event.key == K_DOWN:
            if 2 <= len(list):
                if action_number == 0:
                    arrow1 = ""
                    arrow2 = "→"
                    action_number = 1
                else:
                    arrow1 = "→"
                    arrow2 = ""
                    action_number = 0
        elif event.type == KEYDOWN and event.key == K_z:
            if action_number == 0:
                if 0 != len(list): 
                    del list[0]
                    if 1 <= len(list):
                        message = list[0]
                    elif 0 == len(list):
                        message = ""
            if action_number == 1:
                if 1 != len(list): 
                    del list[1]
                    action_number = 0
                    arrow1 = "→"
                    if 1 <= len(list):
                        message = list[0]
                    elif 0 == len(list):
                        message = ""


```
</details>
 
# アイテムリスト

<details><summary>ここをクリックしてください</summary>

必要なもの
- フォントのファイル
- カーソルの画像


```python:
import pygame
import sys
from pygame.locals import *

pygame.init()
white = (255,255,255)
screen = pygame.display.set_mode((190, 280))
pygame.display.set_caption('item')
#ここにフォントのパスを貼り付ける
font = pygame.font.Font(パス, 20)
#ここにカーソル画像のパスを貼り付ける
cursor = pygame.image.load(パス)
cursor_y = 30
cmd = 0

item_list = ["やくそう0","やくそう1","やくそう2","やくそう3","やくそう4","やくそう5","やくそう6","やくそう7","やくそう8","やくそう9","やくそう10","やくそう11","やくそう12","やくそう13","やくそう14","やくそう15","やくそう16"]

item_index1 = 0
item_index2 = 1
item_index3 = 2
item_index4 = 3
item_index5 = 4
item_index6 = 5
item_index7 = 6

clock = pygame.time.Clock()
running = True
while running:
    clock.tick(60)
    screen.fill((0, 0, 0))
    if len(item_list) >= 1:
        text = font.render(item_list[item_index1], True, (white))      
        screen.blit(text, (36, 30))
    if len(item_list) >= 2:
        text = font.render(item_list[item_index2], True, (white))      
        screen.blit(text, (36, 60))
    if len(item_list) >= 3:
        text = font.render(item_list[item_index3], True, (white))      
        screen.blit(text, (36, 90))
    if len(item_list) >= 4:
        text = font.render(item_list[item_index4], True, (white))      
        screen.blit(text, (36, 120))
    if len(item_list) >= 5:
        text = font.render(item_list[item_index5], True, (white))      
        screen.blit(text, (36, 150))
    if len(item_list) >= 6:
        text = font.render(item_list[item_index6], True, (white))      
        screen.blit(text, (36, 180))
    if len(item_list) >= 7:
        text = font.render(item_list[item_index7], True, (white))      
        screen.blit(text, (36, 210))
    screen.blit(cursor,(8, cursor_y))    
    pygame.display.update()
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        elif event.type == KEYDOWN:
            if event.key == K_UP:
                    if cursor_y != 30:
                        cmd -= 1
                        cursor_y -= 30
                    elif cursor_y == 30 and cmd != 0:
                        cmd -= 1
                        item_index1 -= 1
                        item_index2 -= 1
                        item_index3 -= 1
                        item_index4 -= 1
                        item_index5 -= 1
                        item_index6 -= 1
                        item_index7 -= 1

            elif event.key == K_DOWN:
                if cursor_y != 210:
                    cmd += 1
                    cursor_y += 30
                elif cursor_y == 210 and cmd < len(item_list) - 1:
                    cmd += 1
                    item_index1 += 1
                    item_index2 += 1
                    item_index3 += 1
                    item_index4 += 1
                    item_index5 += 1
                    item_index6 += 1
                    item_index7 += 1
                    


```
</details>
 
#

<details><summary>ここをクリックしてください</summary>

```python:


```
</details>
 
#

<details><summary>ここをクリックしてください</summary>

```python:


```
</details>
 
#

<details><summary>ここをクリックしてください</summary>

```python:


```
</details>
 
#

<details><summary>ここをクリックしてください</summary>

```python:


```
</details>
 
#

<details><summary>ここをクリックしてください</summary>

```python:


```
</details>