0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pygameでRPGをつくってみる10

Last updated at Posted at 2024-10-12

記事全体の目次へ移動

GIF

ここをクリックしてください

無題の動画 ‐ Clipchampで作成 (1).gif

選んで消す

アイテムを選んで消します。
ダウンキーやアップキーで選んで、Zキーで消します。

ここをクリックしてください

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

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

一般社団法人文字情報技術促進協議会(ここから、フォントファイルをダウンロード)

スクリーンショット (693).png

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

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
while (1):
    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 = ""


アイテムリスト

ここをクリックしてください

必要なもの

  • フォントのファイル
  • カーソルの画像
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

while (1):
    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
                    


ここをクリックしてください


ここをクリックしてください


ここをクリックしてください


ここをクリックしてください


ここをクリックしてください


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?