質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

508閲覧

Python イベントが発生していないのを感知する方法

ichiki

総合スコア6

RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/12/02 10:32

編集2019/12/02 15:31

前提・実現したいこと

Pythonでコマンドプロンプト上で遊べるRPGを作ろうと思っています。
なんのイベントも発生していないときに、/menu などのコマンドを打つと、自分のステータスが表示される仕組みを作りたいです
イベントが発生してないときに下記のコードを埋め込みたいのですが、どうイベントが発生してないのを感知して埋め込めばいいでしょうか?

Python

1while True: 2 x = input() 3 if x == '/menu': 4 menu() 5 break 6 elif x == '/help': 7 help() 8 break 9 else: 10 print('正しく入力してください')

###試したこと
イベント発生前に
x = 1
イベント終了時に
x = 0
というコードでxが1ならイベント中、0ならイベントが発生していないという感じにしました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/12/02 10:52

質問の前提が不明ですが、Pythonでそこそこのプログラムを書くスキルはあるのでしょうか?
otn

2019/12/02 13:37

イベントはどうやって発生するつもりですか?
KojiDoi

2019/12/02 13:37

その前に「どうやってイベントを発生させるのか」を考えてみましたか? それができていれば状態を適当な変数に記録しておけばいいので迷う余地はなさそうに思えますが。
ichiki

2019/12/02 13:42

今はチュートリアルまで作っているのですが、そのままmain.pyに処理を書いています 今後関数を使って、呼び出してって感じでやろうと思っているのですが、ほかにおすすめはありますでしょうか。。
otn

2019/12/02 13:45

↑の文章は、「イベントはどうやって発生する?」への回答ですか?
KojiDoi

2019/12/02 13:45

そのmain.pyをあなたがどういう方針で作っているのかわからないので、だれも答えようがないと思いますが。
ichiki

2019/12/02 13:49

すみません。 main.pyは、今作ってるRPGの核の部分で、今はそのファイルのみでチュートリアルまで作っています そうです 関数を使って発生させようと思っていたのですが、ほかにイベントを発生させる方法はありますか?
otn

2019/12/02 14:03

関数は呼ぶために書くのであり、プログラムを部分に分割して書くための物なので、普通は関数は書きます。 先ずはイベントを発生させる部分を完成させてから、「なんのイベントも発生していないとき」を考えましょう。
ichiki

2019/12/02 14:08

わかりました ありがとうございます! イベントを発生させる部分の作り方を質問したいのですが、このスレッドに付け足すのと新しく質問するのはどっちのほうがいいですか? teratailの使い方にまだ慣れてなくて、、
otn

2019/12/02 14:19

新しい質問がいいです。 ・何をしたいのかを具体的に(「イベントを発生させたい」といった抽象表現ではだめです) ・自分はどこまでできているのか
ichiki

2019/12/02 14:21

了解です ありがとうございます!
guest

回答1

0

ということであれば、上記のコードの中に、

if x == 1: continue

を挿入することで、イベントが発生している場合は、入力を受け付けずに処理をスキップすることができます。

つまり、

while True: x = input() if x == 1: continue if x == '/menu': menu() break elif x == '/help': help() break else: print('正しく入力してください')

となります。

また、上記のコードでは、xが1の場合は、入力を受け付けずに処理をスキップしていますが、他のコマンドが打たれた場合も、処理をスキップすることができます。

その場合は、

if x == 1: continue else: if x == '/menu': menu() break elif x == '/help': help() break else: print('正しく入力してください')

という風に記述することができます。

また、更に短く記述することもできます。

while True: x = input() if x == 1: continue if x not in ['/menu', '/help']: print('正しく入力してください') continue if x == '/menu': menu() break elif x == '/help': help() break

上記のように、複数の処理をまとめることで、より短く記述することができます。

投稿2022/12/03 02:10

dark-eater-kei

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問