都在做作業所以忘記寫部落格
沒注意老師講了什麼
2021/12/27
----------------------------------------
小葉老師在協助同學期末作品
子彈碰到會死掉
float x,y;
boolean die=false;
float []bulletX=new float[40];
float []bulletY=new float[40];
float []bulletVX=new float[40];
float []bulletVY=new float[40];;
void setup(){
size(300,500);
for(int i=0;i<40;i++){
bulletX[i]=random(0,300);
bulletY[i]=random(-30.0);
bulletVX[i]=random(-1,+1);
bulletVY[i]=random(1,2);
}
}
void draw(){
background(0);
for(int i=0;i<40;i++){
if(!die){
bulletX[i]+=bulletVX[i]; bulletY[i]+=bulletVY[i];
}
fill(255,255,0); ellipse(bulletX[i],bulletY[i],8,8);
if(dist(x,y,bulletX[i],bulletY[i])<12){
die=true;
}
if(bulletY[i]>500) bulletY[i]=0;
}
if(die) ellipse(x,y,30,30);
else{
fill(255); ellipse(x,y,15,15);
x=mouseX; y=mouseY;
}
}
-----------------------------------------------------
消除的問題int state=0;
void setup(){
size(500,200);
}
float x=400,y=100,vx=0;
void draw(){
if(state==0){
background(255);
x+=vx;
ellipse(x,y,20,20);
line(40,0,40,200);
if(x<40) state=1;
}else if(state==1){;
background(255,255,0);
fill(0); textSize(80); text("過關",20,100);
}
}
void keyPressed(){
if(keyCode==LEFT) vx=-3;
}
void keyReleased(){
if(keyCode==LEFT) vx=0;
}
2.恐龍跳躍、仙人掌、分數顯示
PImage[] Dino_idle = new PImage[2];
PImage[] Saboten = new PImage[3];
int DinoAnim_Timer = 0,PlayerFrame = 2,currentFrame = 0,bad_cooldown = 0,score = 0,distance = 0;
float randomX,randomY,random;
float jump_force,gravity;
float playerX,playerY;
int[] saboten_if = new int[10];
int[] saboten_pos = new int[10];
boolean jumping = false,Onground = true;
void setup()
{
size(1200,700);
frameRate(24);
//基本屬性
jump_force = 40;
gravity = 0;
//恐龍的預設動畫圖片
Dino_idle[0] = loadImage("dino_idle_0.png");
Dino_idle[1] = loadImage("dino_idle_1.png");
//仙人掌
Saboten[0] = loadImage("bad_0.png");
Saboten[1] = loadImage("bad_1.png");
Saboten[2] = loadImage("bad_2.png");
//玩家初始位置
playerX = 100;
playerY = 580;
}
void draw()
{
background(255);
display();
ObjectMove();
//跳躍處理
if(jumping == true)
{
playerY -= jump_force;
if(jump_force > 0) jump_force -= 3;
Onground = false;
if(playerY <= 300) jumping = false;
}
if(jumping == false && Onground == false)
{
playerY += gravity;
gravity += 8;
if(playerY >= 580)
{
playerY = 580;
Onground = true;
jump_force = 40;
gravity = 0;
}
}
//分數增加
distance++;
score = distance/3;
//判定產生仙人掌
random = random(0,50);
random = int(random);
if(random == 5 && bad_cooldown == 0)
{
for(int i = 0;i < 10;i++)
{
if(saboten_if[i] == 0)
{
saboten_if[i] = 1;
saboten_pos[i] = 1300;
bad_cooldown = 30;
break;
}
}
}
}
void display()
{
//分數顯示
textSize(80);
fill(0);
String m_score = nf(score, 4);
text(m_score,950,100);
//恐龍動畫
DinoAnim_Timer++;
imageMode(CENTER);
if(DinoAnim_Timer % PlayerFrame == 0)
{
currentFrame++;
if(currentFrame == PlayerFrame) currentFrame = 0;
DinoAnim_Timer = 0;
}
image(Dino_idle[currentFrame],playerX,playerY);
//地面
stroke(0);
line(0,600,1200,600);
//仙人掌
for(int i = 0;i < 10;i++)
{
if(saboten_if[i] != 0)
{
image(Saboten[0],saboten_pos[i],580);
}
}
}
void ObjectMove()
{
//仙人掌移動
for(int i =0;i < 10;i++)
{
if(saboten_pos[i] < -50) saboten_if[i] = 0;
saboten_pos[i] -= 20;
}
if(bad_cooldown > 0) bad_cooldown--;
}
void keyPressed()
{
if(key == 32)
{
if(Onground)
{
jumping = true;
Onground = false;
}
}
}
2.下次規劃
初步的碰撞檢測、地面開始有變化、不同階段的關卡、恐龍的速度變化