🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

1501閲覧

millisを使用し、時間ごとにだんだんスピードを速くする

likuson

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/12/19 08:36

前提・実現したいこと

processingでホッケーゲームを作成しています。
ホッケーゲームまではできたのですが
時間経つごとにスピードを速くしていきたいです。

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

エラーメッセージはありません。

該当のソースコード

processing

1float x_speed=3.0 ,y_speed=3.0 ,bar_speed=3.0; 2float Lbar_x=70, Lbar_y=210; 3float Rbar_x=730, Rbar_y=210; 4float ball_x=400, ball_y=250, ball_r=30; 5boolean w,s,up,down; 6int Lscore=0, Rscore=0; 7PFont WinFont; 8int time1=4000; 9 10 11void setup(){ 12 size(800,500); 13 WinFont=loadFont("CalistoMT-BoldItalic-48.vlw"); 14 frameRate(100); 15 int time=millis(); 16} 17 18 19void keyPressed() {//キーを押した時 20 if (key == 'w') w = true; 21 if (key == 's') s = true; 22 if (keyCode == UP) up = true; 23 if (keyCode == DOWN) down = true; 24} 25 26void keyReleased() {//キー離した時 27 if (key == 'w') w = false; 28 if (key == 's') s = false; 29 if (keyCode == UP) up = false; 30 if (keyCode == DOWN) down = false; 31} 32 33void draw(){ 34 background(0,206,209); 35 speed(); 36 stroke(255); 37 stage(); 38 noStroke(); 39 Lbar(); 40 Rbar(); 41 ball(); 42 Score(); 43} 44 45void speed(){ 46 int time=millis(); 47 if(time>time1){ 48 x_speed=5.0 ; 49 y_speed=5.0 ; 50 bar_speed=5.0; 51 } 52} 53 54void stage(){ 55 strokeWeight(10); 56 line(width/2,0,width/2,height); 57 noFill(); 58 strokeWeight(5); 59 ellipse(width/2,height/2,150,150); 60} 61 62 63void Lbar(){ 64 fill(255,0,0); 65 if (w) {//上に移動 66 Lbar_y -= bar_speed; 67 } 68 if (s) {//下に移動 69 Lbar_y += bar_speed; 70 } 71 if(Lbar_y<0){//上部barのstop 72 Lbar_y=0; 73 } 74 if(Lbar_y>420){//下部barのstop 75 Lbar_y=420; 76 } 77 rect(Lbar_x,Lbar_y,20,80); 78} 79 80void Rbar(){ 81 fill(0,0,255); 82 if (up) {//上に移動 83 Rbar_y -= bar_speed; 84 } 85 if (down) {//下に移動 86 Rbar_y += bar_speed; 87 } 88 if(Rbar_y<0){//上部barのstop 89 Rbar_y=0; 90 } 91 if(Rbar_y>420){//下部barのstop 92 Rbar_y=420; 93 } 94 rect(Rbar_x,Rbar_y,20,80); 95} 96 97void ball(){ 98 fill(255); 99 ellipse(ball_x,ball_y,ball_r,ball_r); 100 //通常運動 101 ball_x+=x_speed; 102 ball_y+=y_speed; 103 //右壁の跳ね返り 104 if(ball_x>width-ball_r/2){ 105 x_speed=-x_speed; 106 ball_x=400; ball_y=250; 107 Lscore+=1; 108 } 109 //左の跳ね返り 110 if(ball_x<ball_r/2){ 111 x_speed=-x_speed; 112 ball_x=400; ball_y=250; 113 Rscore+=1; 114 } 115 //下の跳ね返り 116 if(ball_y>height-ball_r/2){ 117 y_speed=-y_speed; 118 } 119 //上の跳ね返り 120 if(ball_y<ball_r/2){ 121 y_speed=-y_speed; 122 } 123 //Lbarとの当たり判定 124 if(ball_x-ball_r/2==90){ 125 if(Lbar_y<=ball_y&&ball_y<=Lbar_y+80){ 126 x_speed=-x_speed; 127 } 128 } 129 //Rbarとの当たり判定 130 if(ball_x+ball_r/2==730){ 131 if(Rbar_y<=ball_y&&ball_y<=Rbar_y+80){ 132 x_speed=-x_speed; 133 } 134 } 135 136} 137void Score(){ 138 textSize(30); 139 fill(0); 140 text("Rscore"+Rscore,660,30); 141 text("Lscore"+Lscore,30,30); 142 if(Lscore==10){ 143 noLoop(); 144 fill(255,0,0); 145 textFont(WinFont,100); 146 textAlign(CENTER); 147 text(" L ",width/2,height/2-60); 148 text("YouWin",width/2,height/2+60); 149 } 150 if(Rscore==10){ 151 noLoop(); 152 fill(0,0,255); 153 textFont(WinFont,100); 154 textAlign(CENTER); 155 text(" R ",width/2,height/2-60); 156 text("YouWin",width/2,height/2+60); 157 } 158}

試したこと

timeを宣言する場所を変えてみましたができませんでした

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

windows10,processing3.5.4

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

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

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

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

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

thkana

2020/12/19 23:00

「できませんでした」って主語抜きで言われると、タイトルにある「millisを使用し、時間ごとにだんだんスピードを速くする」ということが実現できなかったんだろうと考えるのが普通かと思いますが、それでいいですか? できなかったのは「スピードを速くする」ことでしょうか? ちょっと走らせてみると、とりあえず速くはなっているようですが。 もしかして、壁でバウンドしなくなることが問題だったりするんじゃないですか?
guest

回答1

0

ボールのスピードは、以下の場所で変更できそうですね。

python

1void speed(){ 2 int time=millis(); 3 if(time>time1){ 4 x_speed=5.0 ; 5 y_speed=5.0 ; 6 bar_speed=5.0; 7 } 8}

現状でも、time1(4000ms)経つと3から5に変更されますよね。

ここを変更して、同じよに、time2, time3と増やして新たな値を設定するのも一つの方法だと思います。

ちょっと進んで、10秒経つとごとに2増えるというようにするには、

  • d = floor(time / 10000) で何十秒経ったかを計算する。
  • 初速が3であれば、 その時刻の速さは、 3 + d * 2 と表わせます。

こんな感じでしょうか。

投稿2020/12/19 09:29

編集2020/12/19 09:32
TakaiY

総合スコア13765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問