Pythonでゲーム作ってみた(2)

やったこと
こまかい話
 pipのインストール
 pygameをインストールするためのインストール
 本命のpygameをインストール
プログラムの説明

やったこと

PythonでSnakeゲーム作ってみた(Windows用) 前回の動画の続きから。。。

www.youtube.com

こまかい話

これは、プログラミングってよりpygameっていうモジュールを自分のPCにインストールするための環境を整える作業が半分の時間を占めました。pip install pygameだけじゃうまくいかなかったんですよね。。。 設定ファイルに設定が入っていないとかどうとか(ログ取るの忘れた) また、Windowsに標準でインストールされるpy.exeとWindows Server Linux(WSL)の中に入れたpythonで混乱してはまりました… なんだかんだ、pipをインストールするところからやりました。

pipのインストール

pipは下のURLからget-pip.pyをローカルにダウンロードして、次のコマンドを実行を実行 ※ リンク先のクリックできるget-pip.pyを右クリックして保存 または 実行するUNIX環境からcurlコマンドを実行してダウンロードの2通りあります。

◆URL

Installation — pip 20.1.1 documentation

◆実行コマンド

python get-pip.py

pygameをインストールするためのインストール

調べても英語しか出てこなかったので、シンプルに解決方法を書いているqiitaを参考にしました。

raspberry pi上のpython3にpygameを入れる際のエラーを解決 - Qiita

sudo apt-get install libsdl-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
sudo apt-get install libsmpeg-dev libportmidi-dev libavformat-dev libswscale-dev

本命のpygameをインストール

◆実行コマンド

pip install pygame

……これで、ようやくスタート地点…

プログラムの説明

ここまでやれば、あとはサンプルプログラムを動かすだけでした。 脳死で実行してみただけになったので勉強は後日に。

紹介したい漫画(4)〜 怪物事変

紹介したい漫画
話の流れ
おすすめな点 追記

紹介したい漫画

本日紹介したい漫画はこれ

怪物事変 1 (ジャンプコミックスDIGITAL)

怪物事変 1 (ジャンプコミックスDIGITAL)

話の流れ

ド田舎で家の手伝いをしながら生活する泥田坊。その周りでは定期的に家畜や動物の死体が見つかります。 そこで探偵として現れた隠神が泥田坊と協力して事件を解決していきます。事件を解決していく中で泥田坊は自分のことを半妖だと知り隠神についていくのです。 泥田坊改め夏羽は自分のルーツを知るために隠神に依頼をし、探偵の手伝いをすることを求められます。 様々な妖怪と数多くの事件に巻き込まれながら、夏羽が自分の正体や本当の家族を探していく物語です。

2020/5/27 既刊10巻

おすすめな点

  1. 絵がきれい
    毎度毎度のこれ。
    週刊少年ジャンプで「保健室の死神」を連載していた人の新連載。
    老若男女、魑魅魍魎いろんなキャラクターが個性的に描かれています。人と妖怪の混じった絵をかくのってすごいなーと。

  2. 要素詰め合わせ ロリ、未亡人、おじさん、ショタ、男の娘、天然、美人なキャラクターに加えて、全員にケモノ属性が付与されています。 気になるキャラクターが見つかること間違いありません。

  3. バトル漫画 話のメインは半妖同士のバトル。妖怪なので何でもあり、派手。 テンポがいいのですいすい読める。 内容もシンプルに頭の中に残るので、伏線とかは少ない感じ。 新キャラクターの能力を想像する時間が楽しい気がする。

追記

これもアニメ化(誉め言葉)すると思うので、先出しで感想を書いてみた。 爽快な漫画読みたい人にはおすすめの一作。

紹介したい漫画(3)〜 アクタージュ act-age

紹介したい漫画
話の流れ
おすすめな点 追記

紹介したい漫画

本日紹介したい漫画はこれ

話の流れ

主人公の夜凪景は高校生。2人の弟妹との3人暮らし。生活費を稼ぐためにバイトをする毎日。 映画を見ることが大好きで役柄をイメージするうちに「元気な役柄を演じる」ことも得意になっていく。 そんな姉を怖がった妹から役者になることを強く薦められて、本格的にオーディションを受けることにする。 そこで、審査員として出会った映画監督(笑)の黒山墨字と出会うことで、主人公の役者人生の扉が開いていく。

2020/5/26時点の既刊は全11巻 読むともどかしくなるので12巻の発売を待つのもおすすめ。 一度、6巻くらいまで読めばどっぷりはまると思う。

※ 著者はジャンプ+でも読んでるし単行本も買っている。

おすすめな点

  1. 絵がきれい
    毎度毎度のこれ。 主人公の一枚絵。登場するライバルの一枚絵。どれもこれもきれいで可愛らしい。

  2. ジャンプの王道 ジャンルでいえば、今までにあまりない「役者」の世界。 ただ、孫悟空のような、うずまきナルトのような、「一見不幸がありつつも才能はMAXで努力家」という主人公設定。 周りのキャラもキレイどころから泥臭い立ち位置、温かい家族のような人間関係もあるので是非お勧め。 きっと、そのうち、アニメ化

  3. 物語を知れる 主人公が演じるのは、実在する名作も含まれています。 アクタージュを通して、題名だけしか知らない物語の中身をじっくり丁寧に読みやすく表現してくれています。 この漫画を読むことで、そういう自分の知らない分野に興味が持てるようになるのもいいですよね。

追記

どうせアニメ化(誉め言葉)すると思うので、先出しで感想を書いてみた。 真面目なシーンの夜凪景の一枚絵と、気の抜けたデフォルメ夜凪景のギャップを楽しむのも最高の漫画。

紹介したい漫画(2)〜 とんがり帽子のアトリエ

紹介したい漫画
話の流れ
おすすめな点 追記

紹介したい漫画

本日紹介したい漫画はこれ

話の流れ

主人公のココは普通の家庭の女の子。家業の仕立て屋さんの手伝いを毎日しています。

世の中には魔法があふれていて、特別な人しか魔法使いにはなれません。

「魔法は尊いもの」と信じているココのお店に魔法使いのキーフリーがやってきます。

そこである事件に巻き込まれたココは魔法を使えることに気づき、キーフリーの弟子になるところで物語が始まっていきます。

この世界の魔法はインクとペンで書かれた「円」を書くことで発動します。書かれる模様で様々な魔法が生まれていきます。

主人公のココがいろんな魔法使いの弟子と出会うことで成長しながら事件を解決する物語です。

1-7巻まで発売中で、2冊/年の刊行ペース

おすすめな点

  1. 絵がきれい
    購入した理由がこれでした。
    書店に張り出されたポスターに書き込まれた線のきめ細やかさとキャラの表情に惹かれました。
    魔法の発動条件の「円を描く」ことと作者のきれいな線がすごく魅力的な漫画だと思います。

  2. ココちゃんまじ天使
    ココちゃんまじ天使。
    封建的な魔法世界において一般家庭から混ざってきたココは偏見の標的。自分が劣っていることを自覚しながら、素直に粘り強く回りとの良好な関係を築き上げるココちゃんまじ天使

  3. ほのぼのファンタジー&バトル
    ほのぼのとした話が7割でバトルが3割くらいの配合です。
    ココちゃんには何か隠された謎があるんだろうなーと思いながら可愛らしさを楽しむ漫画。

追記

追記はなんとなく自分の言葉でまとめてみたかったので、それっぽくまとめています。 見た人が指摘してくれればうれしい。いまのところ見てる人いないけど(笑)

Pythonでゲーム作ってみた(1)

やったこと
こまかい話
プログラムの説明

やったこと

PythonPing Pongゲーム作ってみた(Windows用) ま、Youtube動画参考にコピペしただけだけど。。。

www.youtube.com

こまかい話

実行環境は、Windows + VSCode + pythonです。 pythonは3.8.3を利用しています。

概要欄にプログラムへのリンクがあるので、それを参考にしつつMacWindows用に少し修正しました。

サンプルから変えたところ

  • サウンド再生をos.system()からwinsound.Beap()に変更
  • ballの移動をゆっくりに変更
  • 右側のバーを白からホワイトに変更

やりたいことには紐づきませんが、今日から始まったFGOのイベントで2万課金したので自学自習をした次第です。30分から1時間あれば内容も理解できる感じでした。

プログラムの説明

ざっくり概要だけ説明すると、turtleというモジュールを使用して画面へ描画していくプログラムとなっていました。

turtle --- タートルグラフィックス — Python 3.8.3 ドキュメント

turtle.screen() - 画面描写
turtle.title() - タイトル
turtle.bgcolor() - 背景色
turtle.setup() - 画面の大きさ
turtle.tracer() - 調べてないから不明

読んでいくといろんな、関数があるようですが全部は調べていません。 ※Youtubeも英語なので、ほとんど意味わからん…

turtle.listenだったりturtle.onkeypress()でキーボード入力を受け付けたりしていて 一つのモジュールで画面表示は任せてください!!!てきな有能なやつ

main処理は while True:で無限にループさせつつ、tutle.update()で画面の位置情報を更新していく感じ

バーの表示については、以下で指定。

# Paddle A
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5,stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350, 0)

shapeで形を指定した後に、大きさを決定するshapesizeについては、その引数で実行結果の大きさになるのは意味不明。今回は調べてない。 ちなみに座標系は画面の中心が(0, 0)でsetup()で指定した値が半分になって正、負で作られる感じ。 setup(800, 600)なら左下が(-400, -300)で右上が(400, 300)になる。上の例だと(-350, 0)の座標(左側の真ん中)に白い四角の枠が縦に5の長さで出力される。

ソースコード全体はこんな感じ

# simple Pong in Python3 for Beginners
# By @TokyoEdTech

import turtle
import os
import winsound

wn = turtle.Screen()
wn.title("Pong")
wn.bgcolor("black")
wn.setup(width=800, height=600)
wn.tracer(0)

# Beep Sound
freq = 500
dur = 100

# Score
score_a = 0
score_b = 0

# Paddle A
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5,stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350, 0)

# Paddle B
paddle_b = turtle.Turtle()
paddle_b.speed(0)
paddle_b.shape("square")
paddle_b.color("red")
paddle_b.shapesize(stretch_wid=5,stretch_len=1)
paddle_b.penup()
paddle_b.goto(350, 0)

# Ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("white")
ball.penup()
ball.goto(0, 0)
ball.dx = 0.5
ball.dy = -0.5

# Pen
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write("Player A: 0  Player B: 0", align="center", font=("Courier", 24, "normal"))

# Functions
def paddle_a_up():
    y = paddle_a.ycor()
    y += 20
    paddle_a.sety(y)

def paddle_a_down():
    y = paddle_a.ycor()
    y -= 20
    paddle_a.sety(y)

def paddle_b_up():
    y = paddle_b.ycor()
    y += 20
    paddle_b.sety(y)

def paddle_b_down():
    y = paddle_b.ycor()
    y -= 20
    paddle_b.sety(y)


# Keyboard bindings
wn.listen()
wn.onkeypress(paddle_a_up, "w")
wn.onkeypress(paddle_a_down, "s")
wn.onkeypress(paddle_b_up, "Up")
wn.onkeypress(paddle_b_down, "Down")


# Main game loop
while True:
    wn.update()

    # Move the ball
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)

    # Border checking

    # Top adn Bottom
    if ball.ycor() > 290:
        ball.sety(290)
        ball.dy *= -1

    elif ball.ycor() < -290:
        ball.sety(-290)
        ball.dy *= -1
    
    # Left and right
    if ball.xcor() > 390:
        ball.goto(0, 0)
        ball.dx *= -1

    elif ball.xcor() < -390:
        ball.goto(0, 0)
        ball.dx *= -1

    # Paddle and ball collisions
    if ball.xcor() < -340 and ball.ycor() < paddle_a.ycor() + 50 and ball.ycor() > paddle_a.ycor() - 50:
        ball.dx *= -1 
        winsound.Beep(freq, dur)
    elif ball.xcor() > 340 and ball.ycor() < paddle_b.ycor() + 50 and ball.ycor() > paddle_b.ycor() - 50:
        ball.dx *= -1
        winsound.Beep(freq, dur)

ちょっとしかいじってないので、コメントもそのままリンク元のやつにしました。

  • 実行結果

f:id:toto01853:20200525231602p:plain
プログラム実行画面

紹介したい漫画(1)〜 ひとりぼっちの地球侵略

紹介したい漫画
話の流れ
おすすめな点 追記

紹介したい漫画

本日紹介したい漫画はこれ

話の流れ

 主人公の広瀬 岬一と破天荒な大鳥 希先輩が繰り広げる、学園ファンタジーバトルラブコメ。 ひとりぼっちで地球侵略?を遂行している希先輩に目をつけられた岬一は、彼女との関わっていくうちに地球の重大な危機に気付いてしまい、周りを巻き込みながら奮闘しますが最終的には地球は侵略されてしまうお話になります。

おすすめな点

  1. 絵柄が可愛い

 綺麗な線で描かれた漫画をみることが多いんだけど、何か心惹かれるような感覚があったのでパケ買い。買って後悔はなかった。

  1. 先輩まじ天使

 先輩まじ天使。時折見せる大人と少女の間に存在する儚さのような雰囲気が本当に良い。漫画タイトルの「ひとりぼっち」の意味に気づいたとき先輩への気持ちが爆発しそうになる。

  1. 起承転結が綺麗!!!    個人的な良い漫画の絶対条件がこれ。登場しているキャラクター全員に起承転結があって、結末では喜怒哀楽のいろんな感情が湧いてくる。「好きだったのに…」とか「もう少し先見せろよぉぉぉ」とかね。話ぶっ飛ぶ部分もありますが、学園ファンタジーバトルラブコメですし… そんなのも含めて余韻に浸れる良い漫画だと思います。

追記

 誰に見られるブログでもないですが、基本的に漫画については良い部分しかコメントしません。ネタバレは画面情報から得られる情報くらいで、後は中身を読んで感じた抽象的な感想になります。

Unity触ってみた(1)

やったこと
インストール
勉強になりそうだなーと探したサイト 追記

やったこと

なぜかインストールされていたUnity群を削除
新しいものをインストール
操作方法が勉強できそうなサイトを探索

インストール

Unity インストール手順

create.unity3d.com

なんとなくベータ版を選択

勉強になりそうだなーと探したサイト

Unity公式
Unity Learn - Supporting Home Learning during COVID-19 ※ COVID-19の期間限定?

ドットインストール
https://dotinstall.com/

追記

本当はプロジェクト作ってごにょごにょ進めたんだけど、 1つのPCに複数のバージョンがインストールされていることがわからなくて困惑してしまいました。 なので、いったん削除してから0から始めてます。