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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

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

Q&A

解決済

1回答

851閲覧

(python) random.randintの使い方について

kappar

総合スコア12

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

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

0グッド

0クリップ

投稿2020/06/12 05:01

前提・実現したいこと

pygameを使ってカーゲームのようなものを作っています。
今は車の走る道を自動で生成しようとしています。
道を自動生成する際に、lineを用いて道路の線を描いています。

発生している問題・エラーメッセージ

道の曲がり角度をランダムに設定しており、角度は直線~45度までに設定しています。
(コード中のx2=random.randint(x2-50, x2+50)です)
それに加えて、道が画面(640, 500)からはみ出さないように設定したいのですが、
そのやり方がわかりません。
今は
if x1-50<x2<x1+50:
0<x2<640
としていますが、これだとTrueかfalseが出るだけで指定ができません。
何を用いたらよいのかをお伺いしたいです。

エラーメッセージ

コード

python

1x1=random.randint(0,640) 2x2=random.randint(x2-50, x2+50) 3if x1-50<x2<x1+50: 4 0<x2<640

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

解決したい問題が文面からあまり理解できませんが、要するに
0 <= x2 <= 640 の範囲内でx2を生成したいということでしょうか。

x2 - 50が 0 を下回る可能性がある場合、randintの下限として 0 か x2-50 のどちらか大きい方を採用すればよいということになります。そのコードはmax関数を使って max(0,x2-50) と表せます。
同様に、x2 + 50が 640 を超えないようにするには、 640 か x2+50 のどちらか小さい方を採用すればよい。その場合 min関数を使い min(640,x2+50)と表せます。

ここまでわかれば、randintの双方の引数に上記max関数とmin関数をセットすれば x2 は 常に0から640の範囲に収まるはずです。

投稿2020/06/12 07:36

hope_mucci

総合スコア4447

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

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

kappar

2020/06/12 07:56

文章力なくてすみません… ありがとうございます!上述のようにしたら無事に解決しました! maxとminを入れることは想像できなかったので,非常に勉強になりました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問