ホームページ バックエンド開発 Python チュートリアル Lao Qi から Python を学び、小さなゲームを作りましょう

Lao Qi から Python を学び、小さなゲームを作りましょう

Jun 16, 2016 am 08:41 AM
ゲーム

リストについて話しているときに、ゲームを作ることについて話しましたが、この問題は続かなかったのです。忘れていたわけではなく、どの段階でやるのが最適なのかを考えているだけです。一定期間の学習を経た後、Kanguan はもはや純粋な初心者ではなく、Python の初心者です。今こそそのゲームを作り始める時です。

ゲーム内容:数字当てゲーム

シンプルすぎます。はい、ゲームは難しくありませんが、このゲームに含まれる内容は熟考する価値があります。

ゲームプロセスの説明

プログラムが実行され、特定の範囲内の整数がランダムに選択されます。
ユーザーは数値を入力するように求められ、その数値が推測プログラムによって選択されます。
プログラムは、ユーザーが入力した数字とユーザーが選択した数字を比較し、その数字が同じであれば、ユーザーはゲームを終了します。そうでない場合は、推測が続行されます。
使用頻度が低いユーザーが勝ちます。
分析

プログラム開発の前には、規模の大小を問わず、分析する必要があります。つまり、さまざまな機能ポイントが機能要件に従って分解されます。これにより開発プロセスが決まります。私たちは今、非常に小さなプログラムを作成しており、同じ方法で実行しています。

数字をランダムに選択します

数値をランダムに選択するには、Python のランダム関数、random を使用できます。以下にこの機能を簡単に紹介します。このアプリケーション以外にも拡張して使用できるかどうかを確認します。

私たちはまだ学習方法を強化する必要があります。それは、ヘルプドキュメントを読むことを学ぶことです。

コードをコピー コードは次のとおりです:

>>> ランダムインポート #これは組み込み関数ではないため必要です
>>> ディレクトリ(ランダム)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'ランダム', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', ' __builtins__'、'__doc__'、'__file__'、'__name__'、'__package__'、'_acos'、'_ceil'、'_cos'、'_e'、'_exp'、'_hashlib'、'_hexlify'、'_inst' 、'_log'、'_pi'、'_random'、'_sin'、'_sqrt'、'_test'、'_test_generator'、'_urandom'、'_warn'、'betavariate'、'choice'、'division'、' expovariate'、'gammavariate'、'gauss'、'getrandbits'、'getstate'、'jumpahead'、'lognormvariate'、'normalvariate'、'paretovariate'、'randint'、'random'、'randrange'、'sample' 、'seed'、'setstate'、'shuffle'、'triangular'、'uniform'、'vonmisesvariate'、'weibullvariate']

>>> ヘルプ(random.randint)

モジュールrandomのメソッドrandintに関するヘルプ:

random.Random インスタンスの randint(self, a, b) メソッド
両方の終点を含む、範囲 [a, b] のランダムな整数を返します。

ドキュメントを辛抱強く読めば、その使用方法が理解できます。ただし、主要なものは引き続きリストされていますが、各機能の使用方法を確認する前に、対話型モードのヘルプを通じてドキュメントを参照することをお勧めします。

ランダムな整数:

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
>>> ランダム.randint(0,99)
21

0 から 100 までの偶数をランダムに選択します:

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
>>> ランダム.randrange(0, 101, 2)
42

ランダムな浮動小数点数:

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
>>> ランダム.ランダム()
0.85415370477785668
>>> ランダム.ユニフォーム(1, 10)
5.4221167969800881

ランダムな文字:

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
>>> ランダム.choice('qiwsir.github.io')
「ぐ」

複数の文字から特定の数の文字を選択します:

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
ランダム.サンプル('qiwsir.github.io',3)
['w'、's'、'b']

文字列をランダムに選択します:

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
>>> ランダム.チョイス ( ['リンゴ', '梨', '桃', 'オレンジ', 'レモン'] )
「レモン」

シャッフル: 元の順序をシャッフルし、ランダムな順序に並べます

コードをコピー コードは次のとおりです:

>>> ランダムにインポート
>>> アイテム = [1、2、3、4、5、6]
>>> ランダム.シャッフル(アイテム)
>>> アイテム
[3、2、5、6、4、1]

少し多いです。ただし、この実験では、random.randint() を値として使用できます。追加のものは、1 つ購入すると 1 つ無料になります (ああ、忘れていました、誰も購入しなかったので、このコースはすべて無料です)。

重要な技術的ポイントの 1 つが突破されました。プログラミングの準備が整いました。もう一度プロセスを整理してみましょう。見せる絵を描いてください:

(注: ここで少し怠けて、このプログラムのフローチャートを描けるかどうか見てみましょう。特に初心者の場合は、自分でフローチャートを描く必要があります。オンラインで友人がこう言っているのを見たところです。独学で学習できます プログラミングをしているのですが、論理的思考が苦手なので、うまく学習できていないのですが、実はフローチャートを描くのが論理的思考力を高めるのに良い方法なのです(絵を描いてください)。 🎜>

画像の準備ができました。直観的に理解すると、次のコードは初心者によって書かれることがよくあります (初心者を表しているため、ベテランの方は文句を言わないでください)。

コードをコピー コードは次のとおりです:
#!/usr/bin/env python
#coding:utf-8
ランダムにインポート

数値 = ランダム.randint(1,100)

print "100 以内の自然数を入力してください:"

input_number = raw_input()

ifnumber == int(input_number):

「ご想像のとおり、この番号は次のとおりです。」
を出力します。 番号を印刷
それ以外:
「間違っています」と印刷します

上記のプログラムは基本的には動作しますが、まだ多くの欠陥があります。

最も明白なことは、推測できるのは 1 回だけであり、複数回はできないということです。複数回推測できるように変更するにはどうすればよいですか?頭を使ってコードを読んだり、自分のコードに変更を加えたりして、複数の推測を行うことができますか?

また、入力した数字が大きすぎるのか小さすぎるのかがユーザーにわかるように、利便性を高めることはできますか?

上記の変更のアイデアに基づいて、新しいコードは次のようになります:

コードをコピー コードは次のとおりです:
#!/usr/bin/env python
#coding:utf-8
ランダムにインポート

数値 = ランダム.randint(1,100)

print "100 以内の自然数を入力してください:"

input_number = raw_input()

ifnumber == int(input_number):

「ご想像のとおり、この番号は次のとおりです。」
を出力します。 番号を印刷
elif 番号 > int(input_number):
「小」を印刷
input_number = raw_input()
elif 番号
「大きいです」を印刷
input_number = raw_input()
それ以外:
「間違っています」と印刷します

まあ、ユーザーが 2 回目の入力を許可されているため、元のバージョンよりも少しは改善されているようです。また、入力が大きいか小さいかをユーザーに知らせます。しかし、これもうまくいきません。正しく理解できるまで、何度も入力できるはずです。

はい。これには、ループという新しいものを使用する必要があります。せっかちな場合は、このゲームをさらに改善するために while または for ループを検索できます。急いでいない場合は、この部分については後ほど説明します。

このゲームはまだ終わっていません。ループを使用しても、後で続きます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

See all articles