創作內容

3 GP

processing程式分享

作者:星寒淚│2020-06-22 20:30:45│贊助:1,004│人氣:64
乒乓球

import ddf.minim.*;

Minim minim;

AudioPlayer bgm;
AudioPlayer song;

float ballX,ballY;
float ballSize;
float centerX,centerY;
float paddleW,paddleH;
float rightPaddleX,rightPaddleY;
float leftPaddleX,leftPaddleY;

float speedX,speedY;

boolean isPlaying;
boolean songing;

final int TOTAL_LIFE = 3;
int score;
int life;

void setup(){
  size(640,400);
  background(255);

  minim = new Minim(this);
  
  bgm =minim.loadFile("");
  song =minim.loadFile("");
  bgm.play();
  bgm.loop();
  
  songing = false;
  
  centerX = width/2;
  centerY = height/2;
  ballX = centerX;
  ballY = centerY;
  ballSize  = 15;
  paddleW = 10;
  paddleH = 50;
  rightPaddleX = width-paddleW*2;
  rightPaddleY = centerY-paddleH/2;
  leftPaddleX = paddleW;
  leftPaddleY = centerY-paddleH/2;
  
  score = 0;
  life = TOTAL_LIFE;
  
  //middle line
  stroke(128);
  line(centerX,0,centerX,height);
  
  //ball
  noStroke();
  fill(255,0,0);
  ellipse(centerX,centerY,ballSize,ballSize);
  speedX = random(-5,5);
  speedY = random(-5,5);
  
  //paddles
  fill(0,0,255);
  rect(rightPaddleX,rightPaddleY,paddleW,paddleH);
  rect(leftPaddleX,leftPaddleY,paddleW,paddleH);
  
  isPlaying=false;
  
  
}

void draw(){
  if(isPlaying){
    background(255);
  
    //middle line
    stroke(128);
    line(centerX,0,centerX,height);
  
    //ball
    noStroke();
    fill(255,0,0);
    ellipse(ballX,ballY,ballSize,ballSize);
    ballX +=speedX;
    ballY +=speedY;
    
    //boundary detection
    if(ballX<leftPaddleX+paddleW ){
      speedX *=-1;  
    }
    if(ballY<0 ||ballY>height){
      speedY *=-1;  
    }  
    
    //hit detection
    if(ballX>=rightPaddleX){
      if(ballY>=rightPaddleY && ballY <= rightPaddleY+paddleH){
         speedX  *= -1 ;
         score+=10;
         song.play();
         println("score:"+score);
      }else{
        isPlaying = false;
        life--;
          if(life<=0){
           println("game over");
          }else{
          println("life:"+life);
          }
      }
      
    }
     
    //paddles
    fill(0,0,255);
    //right
    rightPaddleY=mouseY-paddleH/2;
    rect(rightPaddleX,rightPaddleY,paddleW,paddleH);
    //left
    leftPaddleY = ballY - paddleH/2;
    rect(leftPaddleX,leftPaddleY,paddleW,paddleH);
  }
}



void keyPressed(){
  isPlaying =true;
  
  //restart
  ballX = centerX;
  ballY = centerY;
  speedX = random(-5,5);
  speedY = random(-5,5);
}
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4825271
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★anna88711 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:專題分享_日月星辰(7)...

追蹤私訊

作品資料夾

tyu15826大家
天空的送信人今天已經更新了,喜歡天空世界的冒險或對這個題材感興趣的可以來我的小屋看看更多我要大聲說昨天06:04


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】