『こんにちはPython』のスカッシュゲームをラズパイ(Raspbian)で動かしてみた

最近、巷で話題になっている『ゲームセンターあらしと学ぶ プログラミング入門 まんが版こんにちはPython(すがやみつる著)』に出てくるスカッシュゲームをラズパイで動作するようにしてみたので紹介します。

『こんにちはPython』とは

伝説のゲームマンガでプログラミングが楽しく身につく!
だれでも、はじめてでも、ゲームが作れる!

『ゲームセンターあらし』『こんにちはマイコン』のすがやみつる先生が、
プログラミング入門マンガを描き下ろし!
(中略)
プログラミングの必要性はもとより、プログラムをつくって動かす楽しさ、面白さをバッチリ伝えます。もちろん、プログラミング未経験の大人が読んでも役立ちます。
日経ブックナビ より引用

ということで、Pythonを学びたい人たちに注目されているマンガです。

ちなみに、1980年代前半に出版された『こんにちはマイコン』は、当時小学生だった私も読んだ記憶があります。
兄が買ったのかな?
そもそも『ゲームセンターあらし』がわからない…という方は、Wikipediaなどを参照してみてくださいね。

事前準備

Pythonはラズパイに標準インストールされていますが、『こんにちはPython』と同じ環境にするには、IDLEが必要ですね。
ラズパイへのIDLEのインストールは、以下のコマンドでOKです。

sudo update
sudo apt-get install idle-python3.7

スカッシュゲームのソースコード(scash.py)は、すがやみつる先生のホームページにありますので、ダウンロードしておきましょう。

修正開始

とりあえず、ダウンロードしたscash.pyをIDLEで実行してみましょう。

画像1

ModuleNotFoundErrorが発生しました。
エラーの内容を読むと、どうやら5行目にある「winsound」というモジュールが原因のようです。
「winsound」はWindows専用のモジュールですから、ラズパイ(Raspbian)でエラーになるのは当然ですね。

winsound モジュールは Windows プラットフォーム上で提供されている基本的な音声再生機構へのアクセス手段を提供します。このモジュールではいくつかの関数と定数が定義されています。
Pythonのドキュメント より引用

「winsound」の代わりに、ラズパイでBeep音を出すには「SoX(Sound eXchange)」というコマンドユーティリティを使います。
SoXは、様々な形式のオーディオファイルを再生したり、録音したり、他の形式に変換できたりします。さらに、エフェクトもつけることができます。

SoX is a cross-platform (Windows, Linux, MacOS X, etc.) command line utility that can convert various formats of computer audio files in to other formats. It can also apply various effects to these sound files, and, as an added bonus, SoX can play and record audio files on most platforms.
SoXオフィシャルサイト より引用

ラズパイへのインストールは、以下のコマンドでOKです。

sudo apt-get install sox

今度こそ修正開始

SoXに合わせて修正しましょう。
修正箇所は、以下の5つです。

①5行目

import winsound


import os


②54行目
③58行目

winsound.Beep(1320, 50)


os.system('play -n synth %s sin %s' % (50/1000, 1320))


④67行目

winsound.Beep(2000, 50)


os.system('play -n synth %s sin %s' % (50/1000, 2000))


⑤91行目

winsound.Beep(200, 800)


os.system('play -n synth %s sin %s' % (800/1000, 200))


修正ができたらIDLEから実行してみましょう。
ちゃんとスカッシュゲームが始まって、音も鳴りましたか?

画像2

まとめ

このように同じプログラムでも、OSを変えると違いがよく理解でき、プログラミングの幅が広がると思いますので、ぜひチャレンジしてみてください。



この記事が気に入ったらサポートをしてみませんか?