LoginSignup
5
0

More than 1 year has passed since last update.

[無駄アプリ]連打でアリーヴェデルチやってみた

Last updated at Posted at 2021-12-01

この記事はプロトアウトスタジオのカレンダー | Advent Calendar 2021 - Qiitaの2日目の記事です。

はじめに

ゲームコントローラーのボタン連打でアリーヴェデルチをするだけのアプリ作りました。
完成品はこちら

アリーヴェデルチとは

アリーヴェデルチの意味がわからんという方のためにリンク置いときます。

「アリアリアリアリアリ、アリーヴェデルチ!」と言い、アリアリの間はずーっと殴りっぱなしで、止めめに強い一撃を相手にくらわせる。

↑ ここをアプリにしました。

スクリプト

Python3 スクリプトです。実行環境は Python 3.9.5 です。

連打でアリーヴェデルチ.py
import pygame
from pygame.locals import *
import random

screenWidth  = 1200
screenHeight = 800

def setString(screen,dispStr,sFlg):
    col1 = 255
    col2 = 255
    col3 = 255
    fSize = 100
    posX = 250
    posY = screenHeight / 2 -50
    if sFlg == 0:
        col1 = random.randrange(255)
        col2 = random.randrange(255)
        col3 = random.randrange(255)
        fSize = random.randrange(20) * 10
        posX = random.randrange(screenWidth)
        posY = random.randrange(screenHeight)
    else:
        screen.fill((0,0,0))
    font = pygame.font.Font("meiryo.ttc", fSize)        # フォントの設定(55px)
    text = font.render(dispStr, True, (col1,col2,col3)) # 描画する文字列の設定
    screen.blit(text, [posX, posY])                     # 文字列の表示位置
    pygame.display.update()                             # 画面を更新

def clearScreen(screen):
    screen.fill((0,0,0))    # 画面を黒色に塗りつぶし
    pygame.display.update() # 画面を更新

pygame.init() # pygameの初期化
pygame.joystick.init()

try:
   joystick = pygame.joystick.Joystick(0)
   joystick.init()
   print('ジョイスティックの名前:', joystick.get_name())
   print('ボタン数 :', joystick.get_numbuttons())
except pygame.error:
   print('ジョイスティックが接続されていません')

screen = pygame.display.set_mode((screenWidth, screenHeight)) # 画面の生成

# ループ
active = True
while active:
   # イベントの取得
   for e in pygame.event.get():
       # 終了ボタン
        if e.type == QUIT:
            active = False

        print('|'+str(e))
        # ジョイスティックのボタンの入力
        if e.type == pygame.locals.JOYAXISMOTION:
            print('十時キー:', joystick.get_axis(0), joystick.get_axis(1))
        elif e.type == pygame.locals.JOYBUTTONDOWN:
            print('ボタン'+str(e.button)+'を押した')
            if e.button == 3:
                setString(screen,"アリ",0)
            elif e.button == 2:
                clearScreen(screen)
            elif e.button == 1:
                setString(screen,"アリーヴェデルチ",1)
        elif e.type == pygame.locals.JOYBUTTONUP:
            print('ボタン'+str(e.button)+'を離した')

補足

操作について

ゲームコントローラの3つのボタンを使います。

  • ボタン2 : 画面に アリ を描画。文字サイズ、座標、色はランダム
  • ボタン3 : 画面クリア(画面全体を黒で塗る)
  • ボタン4 : 画面クリアの後、アリーヴェデルチ を描画

該当するスクリプトはこちらです。

if e.button == 3:
    setString(screen,"アリ",0)
elif e.button == 2:
    clearScreen(screen)
elif e.button == 1:
    setString(screen,"アリーヴェデルチ",1)

関数 setString は、第3引数により、画面クリアの有無や、文字設定の処理が変わります。

ゲームコントローラの制御について

ゲームコントローラの制御スクリプトについてはこちらに記載しました。

pygame 日本語文字列の描画について

Pythonモジュール pygame でスクリーン上に日本語の文字列を描画するには以下のように日本語に対応したフォントの設定が必要です。

font = pygame.font.Font("meiryo.ttc", fSize)

無料フォントを取得するなどで用意してください。

おわりに

ゲームコントローラーを使った何かを作りたくて簡単なアプリを作ってみました。今後はラジコンのコントローラーとして使ってみたいと思います。

5
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
5
0