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

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

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

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

Q&A

解決済

1回答

588閲覧

artisoc cloud 坂道での車の加速度について

kenkenpa0530

総合スコア3

Python

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

0グッド

0クリップ

投稿2022/11/20 08:25

前提

ここに質問の内容を詳しく書いてください。

artisoc cloud というサイトでpythonを用いて坂道の影響による渋滞のシミュレーションを作成しています

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • ・下り坂、上り坂でそれぞれ減速、加速したい
    ・加速度によって速度を変えたい

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

・最後の平坦な道に戻ったときに通常速度に戻るように加速したいが0.05が1度だけ加速するだけで通常速度まで加速しない

エラーメッセージ

該当のソースコード

def agt_init(self):
self.y = 25
ds = Universe.default_speed/100
self.speed = ds

def agt_step(self):
ds = Universe.default_speed/100
mn = Universe.min_speed/100
mx = Universe.max_speed/100
acc = Universe.accelerator

if self.x <=20: self.speed = ds self.color = rgb(0,0,0) #通常速度の時は黒 if self.x > 20 and self.x <40: self.direction = 360-45 if self.speed <= mx: self.speed += 0.05 self.color = rgb(100, 100, 200) # 加速時は青 if self.x >= 40: self.direction = 45 if self.speed == mx or self.speed >mn: self.speed -= 0.05 self.color = rgb(255, 100, 200) # 減速時は赤 if self.y >=25: self.direction = 0 self.y = 25 if self.speed <= ds: self.speed += 0.05 self.color = rgb(100, 100, 200) #加速時は青 if self.speed == ds: self.color = rgb(0,0,0) #通常速度の時は黒 self.forward(self.speed)
ソースコード

試したこと

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

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

0.05が1度だけ加速するだけで通常速度まで加速しない

原因は、上り坂での条件判定です。

修正前(質問記載の後半と同じコードの引用)

python

1if self.x >= 40: 2 self.direction = 45 3 if self.speed == mx or self.speed >mn: 4 self.speed -= 0.05 5 self.color = rgb(255, 100, 200) # 減速時は赤 6 if self.y >=25: 7 self.direction = 0 8 self.y = 25 9 if self.speed <= ds: 10 self.speed += 0.05 11 self.color = rgb(100, 100, 200) #加速時は青 12 if self.speed == ds: 13 self.color = rgb(0,0,0) #通常速度の時は黒

このコードですと、x が 40以上で速度が最小値より大きい場合、必ず self.speed -= 0.05 が処理されるため、その後
if self.y >=25
かどうかを判定して speed を加速しても、次の stepでまた-0.05されてしまいます。

ここは、下記のようにでもするべきでしょう。
修正後(後半のみ)

python

1 if self.x >= 40: 2 if self.y < 25: // 上り坂である。 3 self.direction = 45 4 if self.speed > mn: 5 self.speed -= 0.05 #teratail_tih5dwr7irfje59 6 self.color = rgb(255, 100, 200) # 減速時は赤 7 else: // 上り坂を過ぎて平坦な道になった。 8 self.direction = 0 9 self.y = 25 10 if self.speed <= ds: 11 self.speed += 0.05 12 self.color = rgb(100, 100, 200) #加速時は青 13 else: 14 self.color = rgb(0,0,0) #通常速度の時は黒

投稿2022/11/20 09:51

編集2022/11/20 10:11
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kenkenpa0530

2022/11/20 11:54

お早い解答ありがとうございました! 無事解決することができました! またお世話になることがあるかもしれませんがその際はご教授いただければ幸いです。 改めましてこの度はご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問