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

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回答

528閲覧

乱数(x1)から範囲を指定して乱数(x2)を発生させるコードがわかりません

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/10 06:38

編集2020/06/10 07:02

前提・実現したいこと

pygameを使って,道をランダムに描画しようとしています。

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

random.randintで発生した乱数をx1としたときに
x1-50<x1<x1+50 の範囲で乱数を発生させたいのですが
どうコードを書いたらよいのかわかりません。

具体的には
x1が300だと,x2の取りうる値は250<x2<350
x1が270だと,x2の取りうる値は220<x2<320
となるような場合にどのように算出したらよいのか…という質問です。

今はrandom.randint(x1-50<x1<x1+50)と書いていますが,これでは動きませんでした。
何を用いればよいのかをご教授いただきたいです…。

エラーメッセージ

該当のソースコード

python

1import pygame 2from pygame.locals import * 3import sys 4import time 5import random 6 7BLACK = (0, 0, 0) 8WHITE = (255, 255, 255) 9 10pygame.init() #初期化 11screen = pygame.display.set_mode((640, 500)) #画面サイズ 12myclock = pygame.time.Clock() 13myclock.tick(30) 14pygame.display.flip() 15 16pos_2y=380 #1本目 17pos_3y=500 18pos_4y=380 19pos_5y=500 20pos_6y=330 #2本目 21pos_7y=380 22pos_8y=330 23pos_9y=380 24pos_10y=280 #3本目 25pos_11y=330 26pos_12y=280 27pos_13y=330 28 29 30velocity_y=1 31 #速さ1にした&45度だから1ずつ動く 32 33x1=random.randint(245,345) 34x2=random.randint(-50<x100<50) 35 36while True: 37 time.sleep(0.1) 38 pos_2y+=velocity_y 39 pos_3y+=velocity_y 40 pos_4y+=velocity_y 41 pos_5y+=velocity_y 42 pos_6y+=velocity_y 43 pos_7y+=velocity_y 44 pos_8y+=velocity_y 45 pos_9y+=velocity_y 46 pos_10y+=velocity_y 47 pos_11y+=velocity_y 48 pos_12y+=velocity_y 49 pos_13y+=velocity_y 50 screen.fill(BLACK) 51 st1=(345, pos_2y) 52 en1=(345, pos_3y) 53 pygame.draw.line (screen, WHITE, st1, en1) 54 st2=(295, pos_4y) 55 en2=(295, pos_5y) 56 pygame.draw.line (screen, WHITE, st2, en2) 57 st3=(x1+50, pos_6y) 58 en3=(345, pos_7y) 59 pygame.draw.line (screen, WHITE, st3, en3) 60 st4=(x1, pos_8y) 61 en4=(295, pos_9y) 62 pygame.draw.line (screen, WHITE, st4, en4) 63 st5=(x2+50, pos_10y) 64 en5=(x1+50, pos_11y) 65 pygame.draw.line (screen, WHITE, st5, en5) 66 st6=(x1, pos_12y) 67 en6=(x2, pos_13y) 68 pygame.draw.line (screen, WHITE, st6, en6) 69 pygame.display.update() 70 for event in pygame.event.get(): 71 if event.type==pygame.QUIT: 72 pygame.quit() 73 sys.exit() 74

試したこと

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

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

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

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

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

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

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

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

maisumakun

2020/06/10 06:55

x1からx2を生成する、とはどういう意味でしょうか。
kappar

2020/06/10 07:00

randomで発生させた乱数(仮にx1とします)を基準として,x1-50<x1<x1+50となる乱数(x2とします)を発生させたい…という意味です。 具体的には x1が300だと,x2の取りうる値は250<x2<350 x1が270だと,x2の取りうる値は220<x2<320 となるような場合にどのように算出したらよいのか…という質問です。わかりにくくて申し訳ございません。本文を修正します。
guest

回答1

0

自己解決

コードにミスがあっただけでした。

修正後)x2=random.randint(x1-50,x1+50)

としたら動きました。

投稿2020/06/10 07:04

kappar

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問