2013年11月11日 星期一
2013年11月10日 星期日
7.8.10課堂總結
https://www.youtube.com/watch?v=Vf_4qpTqtrw&feature=youtu.be
這是我們的期中作業成品,我們做的是老鼠捉貓,
參考一款手機APP遊戲: Mr.Opps!
我們的主角多拉a夢要閃避從四面八方衝出來的老鼠~
生存越久獲得分數會隨時間增加!!然後我們有做一個道具,吃了老鼠移動速度會變慢,
會讓我們的哆啦a夢更容易生存xD
這是我們的期中作業成品,我們做的是老鼠捉貓,
參考一款手機APP遊戲: Mr.Opps!
我們的主角多拉a夢要閃避從四面八方衝出來的老鼠~
生存越久獲得分數會隨時間增加!!然後我們有做一個道具,吃了老鼠移動速度會變慢,
會讓我們的哆啦a夢更容易生存xD
2013年11月9日 星期六
2013年10月28日 星期一
week08
遊戲名稱:太鼓達人
遊戲玩法:當紅色或藍色的圓圈跑到指定的白色圓圈中時,會變成綠色
當按下指定的按鈕(藍色"x",紅色"y")獲取分數,
跟著節奏訓練自己的手眼協調力,也可以在好聽的歌曲中加入自己的鼓聲
使遊戲更好玩。
和楊舒婷一起做
Week8
##進度_第一關答案判定
PImage starS;
int []muc=new int[5];
int Z,i=0;
int D1=0,D2=6,D3=6;
int []Ponx={100,500,300,100,500};
int []Pony={500,500,300,100,100};
int []PPx={125,525,325,125,525};
int []PPy={525,525,325,125,125};
int []x={6,6,6,6,6,6,6,6};
int []y={0,2,4,1,2,3,0,1};
int W;
void setup()
{
size(1000,750);
background(255,255,255);
starS=loadImage("http://i.imgur.com/Oxs9TWM.png?1");
image(starS,Ponx[0],Pony[0],50,50);
image(starS,Ponx[1],Pony[1],50,50);
image(starS,Ponx[2],Pony[2],50,50);
image(starS,Ponx[3],Pony[3],50,50);
image(starS,Ponx[4],Pony[4],50,50);
}
void mouseClicked()
{
for(i=1;i<=8;i++)
{
if(Ponx[0]<=mouseX&&mouseX<=Ponx[0]+50&&Pony[0]<=mouseY&&mouseY<=Pony[0]+50)
{
Z=0;
}
else if(Ponx[1]<=mouseX&&mouseX<=Ponx[1]+50&&Pony[1]<=mouseY&&mouseY<=Pony[1]+50)
{
Z=1;
}
else
if(Ponx[2]<=mouseX&&mouseX<=Ponx[2]+50&&Pony[2]<=mouseY&&mouseY<=Pony[2]+50)
{
Z=2;
}
else
if(Ponx[3]<=mouseX&&mouseX<=Ponx[3]+50&&Pony[3]<=mouseY&&mouseY<=Pony[3]+50)
{
Z=3;
}
else
if(Ponx[4]<=mouseX&&mouseX<=Ponx[4]+50&&Pony[4]<=mouseY&&mouseY<=Pony[4]+50)
{
Z=4;
}
if(D1!=6)
{
D2=Z;
//x[i]=Z;
draw();
D1=D2;
D2=6;
}
}
//check();
}
void draw()
{
if(D1==0 && D2==1 || D1==1 && D2==0)
line(PPx[0],PPy[0],PPx[1],PPy[1]);
else if(D1==0 && D2==3 ||D1==3 && D2==0 )
line(PPx[0],PPy[0],PPx[3],PPy[3]);
else if(D1==2 && D2==0 ||D1==0 && D2==2 )
line(PPx[0],PPy[0],PPx[2],PPy[2]);
else if(D1==1 && D2==2 ||D1==2 && D2==1 )
line(PPx[1],PPy[1],PPx[2],PPy[2]);
else if(D1==1 && D2==4 ||D1==4 && D2==1 )
line(PPx[1],PPy[1],PPx[4],PPy[4]);
else if(D1==2 && D2==3 ||D1==3 && D2==2 )
line(PPx[2],PPy[2],PPx[3],PPy[3]);
else if(D1==2 && D2==4 ||D1==4 && D2==2 )
line(PPx[2],PPy[2],PPx[4],PPy[4]);
else if(D1==3 && D2==4 ||D1==4 && D2==3 )
line(PPx[3],PPy[3],PPx[4],PPy[4]);
}
/*void check()
{
for(i=0;i<8;i++)
{
if(x[i]==y[i])W=1;
else W=0;i=8;
}
if(W==1)
{
image(starS,Ponx[0],Pony[0],200,200);
}
else if(W==0)
{
image(starS,Ponx[0],Pony[0],500,500);
}
}*/
WEEK08
遊戲名稱 : Mondo and fiddle!!
組員名稱: 呂東勳 99163161
雲品瀚 99163205
新進度:
將人物更新
設定接觸20個完成任務
有開頭畫面與結束畫面
有背景
可以記錄分數
未來進度:
加入音樂
接到的音效
程式碼如下:
int N=4;
float AriX=150;
float AriY=700;
float []thingX = new float[4];
float []thingY = new float[4];
float []thingType = new float[4];
PImage imgMoney;
PImage imgAri;
PImage imgDola;
PImage imgChouda;
PImage imgBack;
PImage imgTemmo;
PImage imgsuc;
int score = 0;
int stage=0;
void setup(){
size(600,800);
imgMoney=loadImage("http://ext.pimg.tw/pplanetj/1354368747-3891682287_n.png");
imgAri=loadImage("http://pic.pimg.tw/pplanetj/1353075166-1361306915_n.png");
imgDola=loadImage("http://pic.pimg.tw/pplanetj/1354368741-2996714660_t.png");
imgChouda=loadImage("http://pic.pimg.tw/pplanetj/1353075170-12784274_n.png");
imgBack=loadImage("http://pic1.kkdoor.net/u/1/42775752_41144.jpg");
imgTemmo=loadImage("http://i.gbc.tw/gb_img/0/002/420/2420030.jpg");
imgsuc=loadImage("http://ih3.redbubble.net/image.13391908.4520/sticker,375x360.u1.png");
//image(imgBack,600,800);
for(int i=0;i<N;i++){
newThing(i);
}
}
int countDown=3*30;
void draw(){
switch(stage){
case 0:
if(countDown>0){
image(imgTemmo,0,0,600,800) ;
countDown--;
textSize(50);
text("Mondo and Fiddle!!",70,250);
text("Start: "+countDown/30,250,350);
return ;
}
image(imgBack,0,0,600,800);
for(int i=0;i<N;i++){
if(thingType[i]==1) drawchouda(i);
else if(thingType[i]==2) drawDola(i);
else if(thingType[i]==3) drawMoney(i);
thingY[i]+=4;
if(thingY[i]>800) newThing(i);
}
image(imgAri,AriX,AriY,150,100);
for (int i = 0; i < 4 ; i++){
scores(i);
}
pushMatrix();
fill(255,0,0);
textSize(30);
text("Score: "+score,50,150);
popMatrix();
break;
case 1:
image(imgsuc,0,0,600,800) ;
/* pushMatrix();
fill(255,0,0);
textSize(70);
text("sucessful!!! ",250,350);
popMatrix();
*/
break;
}
}
void keyPressed(){
if(keyCode==RIGHT) AriX+=50;
if(keyCode==LEFT) AriX-=50;
}
void newThing(int i) {
thingY[i]=-random(200);
thingX[i]=random(520);
thingType[i]=int(random(3))+1;
}
void drawchouda(int i){
fill(255,0,0);
image(imgChouda,thingX[i],thingY[i],100,100);
}
void drawDola(int i){
fill(0);
image(imgDola,thingX[i],thingY[i],100,100);
}
void drawMoney(int i){
fill(#FF6803);
image(imgMoney ,thingX[i],thingY[i],100,100);
}
void scores(int i){
if( AriX + 100 >= thingX[i] && thingX[i]+100>=AriX && AriY <= thingY[i]+100){
newThing(i);
score++;
}
if(score==20)
stage=1;
}
預覽圖片:
組員名稱: 呂東勳 99163161
雲品瀚 99163205
新進度:
將人物更新
設定接觸20個完成任務
有開頭畫面與結束畫面
有背景
可以記錄分數
未來進度:
加入音樂
接到的音效
程式碼如下:
int N=4;
float AriX=150;
float AriY=700;
float []thingX = new float[4];
float []thingY = new float[4];
float []thingType = new float[4];
PImage imgMoney;
PImage imgAri;
PImage imgDola;
PImage imgChouda;
PImage imgBack;
PImage imgTemmo;
PImage imgsuc;
int score = 0;
int stage=0;
void setup(){
size(600,800);
imgMoney=loadImage("http://ext.pimg.tw/pplanetj/1354368747-3891682287_n.png");
imgAri=loadImage("http://pic.pimg.tw/pplanetj/1353075166-1361306915_n.png");
imgDola=loadImage("http://pic.pimg.tw/pplanetj/1354368741-2996714660_t.png");
imgChouda=loadImage("http://pic.pimg.tw/pplanetj/1353075170-12784274_n.png");
imgBack=loadImage("http://pic1.kkdoor.net/u/1/42775752_41144.jpg");
imgTemmo=loadImage("http://i.gbc.tw/gb_img/0/002/420/2420030.jpg");
imgsuc=loadImage("http://ih3.redbubble.net/image.13391908.4520/sticker,375x360.u1.png");
//image(imgBack,600,800);
for(int i=0;i<N;i++){
newThing(i);
}
}
int countDown=3*30;
void draw(){
switch(stage){
case 0:
if(countDown>0){
image(imgTemmo,0,0,600,800) ;
countDown--;
textSize(50);
text("Mondo and Fiddle!!",70,250);
text("Start: "+countDown/30,250,350);
return ;
}
image(imgBack,0,0,600,800);
for(int i=0;i<N;i++){
if(thingType[i]==1) drawchouda(i);
else if(thingType[i]==2) drawDola(i);
else if(thingType[i]==3) drawMoney(i);
thingY[i]+=4;
if(thingY[i]>800) newThing(i);
}
image(imgAri,AriX,AriY,150,100);
for (int i = 0; i < 4 ; i++){
scores(i);
}
pushMatrix();
fill(255,0,0);
textSize(30);
text("Score: "+score,50,150);
popMatrix();
break;
case 1:
image(imgsuc,0,0,600,800) ;
/* pushMatrix();
fill(255,0,0);
textSize(70);
text("sucessful!!! ",250,350);
popMatrix();
*/
break;
}
}
void keyPressed(){
if(keyCode==RIGHT) AriX+=50;
if(keyCode==LEFT) AriX-=50;
}
void newThing(int i) {
thingY[i]=-random(200);
thingX[i]=random(520);
thingType[i]=int(random(3))+1;
}
void drawchouda(int i){
fill(255,0,0);
image(imgChouda,thingX[i],thingY[i],100,100);
}
void drawDola(int i){
fill(0);
image(imgDola,thingX[i],thingY[i],100,100);
}
void drawMoney(int i){
fill(#FF6803);
image(imgMoney ,thingX[i],thingY[i],100,100);
}
void scores(int i){
if( AriX + 100 >= thingX[i] && thingX[i]+100>=AriX && AriY <= thingY[i]+100){
newThing(i);
score++;
}
if(score==20)
stage=1;
}
預覽圖片:
WEEK08,期中作業
組員: 99163072盧彥佑
99163134簡尉倫
遊戲名稱:BALLS BOMB!!
第一節
討論期中作業以及想法
第二節、第三節
將程式碼修改,新增封面和結束畫面、可以選取按鈕、跑分數。
float [] ballX = new float [50];
float [] ballY = new float [50];
float [] ballVX = new float [50];
float [] ballVY = new float [50];
float [] ballR = new float [50];
int h = 600;
int w = 600;
int test = 0;
int aa = 0, bb = 0;
int stage =0; //控制目前場景位置
PImage [] game = new PImage [11];
PImage bkImage ;
String [] name = new String [11];
int moteX = 0, moteY = 0, mote = 0; //切割按鈕位置用
int checkanswer = 0; //title控制按鈕
int checktime = 0; //讓大球跑一遍
void setup() {
size(h, w);
for (int i = 0 ; i < 11; i++) {
name[i] = "title"+ i + ".png";
game[i] = loadImage(name[i]);
}
bkImage = loadImage("bk.png");
}
void draw() {
switch(stage) {
case 0:
image(bkImage, 0, 0, w, h);
image(game[0], w/8, h/8, w/8*6, h/8);
for (int i=1 ; i<=4;i++) {
image(game[i], w/4 + w/8, h/8*(2+i), w/2-(w/4), h/16);
}
moteX = mouseX - w/4 - w/8;
moteY = mouseY - h/8*3;
if ( moteX >= 0 && moteX /(w/4) == 0 ) {
mote = moteY / (h/8/2)+2;
if ( mote%2 == 0 && mote < 9 && moteY > 0) {
image(game[mote/2+4], w/4+ w/8, h/8*(2+mote/2), w/2-(w/4), h/16);
checkanswer = mote/2;
}
else checkanswer =0;
}
checktime = 0;
aa = 0;
bb = 0;
break;
case 1:
background(255);
noStroke();
fill(0, 255, 255);
if (checktime==0) {
ballX[0] = w/8*4 ;
ballY[0] = w/8*3/2;
ballVX[0] = 0 ;
ballVY[0] = 0.5;
ballR[0] = w/8*3;
checktime++;
}
for (int i = 0;i<50;i++) {
ellipse(ballX[i], ballY[i], ballR[i], ballR[i]);
if (ballX[i] != 0) ballVY[i] +=0.15;
ballX[i] += ballVX[i];
ballY[i] += ballVY[i];
}
attack();
balls();
releaseball();
fill(255, 0, 0);
textSize(20);
text("grade:" + aa, 20, 20, 100, 50);
endgame();
break;
case 2 :
break;
case 3 :
text("grade:" + aa, 20, 20, 100, 50);
break;
case 4:
exit();
break;
case 10 :
background(0);
fill(255, 0, 0);
textSize(100);
text("GAME OVER!!", w/4, h/4-h/8, w/2, h/2);
fill(255, 128, 0);
textSize(50);
if (bb<aa) {
bb++;
}
if (bb/1000!=0) text("grade:" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
else if (bb/100!=0) text("grade:0" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
else if (bb/10!=0) text("grade:00" +bb, w/4, h*4/8+h/16, w/8*7, h/8);
else text("grade:000" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
image(game[10],w/4-w/8, h/8*6, w/2-(w/4), h/16);
image(game[8],w/2+w/8, h/8*6, w/2-(w/4), h/16);
if (mouseX >= w/4-w/8 && mouseX <= w/2 - w/8 && mouseY >= h/8*6 && mouseY <= h/8*6 + h/16){
image(game[9],w/4-w/8, h/8*6, w/2-(w/4), h/16);
checkanswer =1;
}else if(mouseX >= w/2+w/8 && mouseX <= w - w/8 && mouseY >= h/8*6 && mouseY <= h/8*6 + h/16){
image(game[4],w/2+w/8, h/8*6, w/2-(w/4), h/16);
checkanswer =2;
}else checkanswer =0;
break;
}
}
void keyPressed() {
switch(stage) {
case 1:
break;
}
}
void mousePressed() {
switch(stage) {
case 0:
if (checkanswer == 1) stage =1;
if (checkanswer == 2) stage =2;
if (checkanswer == 3) stage =3;
if (checkanswer == 4) stage =4;
break;
case 1:
for (int i = 0;i<50;i++) {
if (dist (ballX[i], ballY[i], mouseX, mouseY)<=(ballR[i]/2)) {
if (ballR[i]/2 <= 15 && ballR[i]/2 != 0) {
aa += int (w*9/8/ ballR[i]);
bigball(i);
}
else {
aa += int (w*9/8 / ballR[i]);
if ((mouseX - ballR[i]/10) - ballR[i]*1/3 <= 0) {
ballY[i] = ballY[i];
ballVY[i] = -ballVY[i] + random(1);
ballR[i] = ballR[i]*2/3;
}
else {
ballX[i] = mouseX - ballR[i]/10;
ballY[i] = ballY[i];
ballVX[i] = -3*cos(random(PI/2));
ballVY[i] = -ballVY[i] + random(1);
ballR[i] = ballR[i]*2/3;
}
newball(i, 1);
for (int j = 0 ; j < 50 ; j ++ ) {
if (ballX[j] == 0.0 && ballY[j] == 0.0 ) {
test ++ ;
}
if (test != 0) {
if ((mouseX + ballR[i]) + ballR[i]/2 >= w) {
ballX[j] = ballX[i];
ballY[j] = ballY[i]+ballR[i];
ballVY[j] = ballVY[i]+random(1);
ballVX[j] = 3*cos(random(PI/2)) ;
ballR[j] = ballR[i];
}
else {
ballX[j] = mouseX + ballR[i];
ballY[j] = ballY[i];
ballVX[j] = 3*cos(random(PI/2)) ;
ballVY[j] = ballVY[i]+random(1);
ballR[j] = ballR[i];
}
newball(j, 1);
test=0;
break;
}
}
}
}
}
break;
case 2:
stage = 0;
break;
case 3:
stage = 0;
break;
case 10:
if (checkanswer == 1) stage = 0;
if (checkanswer == 2) exit();
break;
}
}
void attack() {
for (int i=0 ; i <50 ; i++ ) {
if ( ballX[i] - ballR[i]/2 <= 0 || ballX[i] + ballR[i]/2 >= w) {
ballVX[i] = -ballVX[i];
}
}
}
void balls() {
for (int i = 0 ; i <50 ;i ++) {
for (int j = i ; j <50 ; j ++) {
if (dist(ballX[j], ballY[j], ballX[i], ballY[i]) <= (ballR[i]/2 + ballR[j]/2) ) {
if (i!=j) {
if (ballX[j] >= ballX[i]) ballVX[i] = -abs(ballVX[i]+ballVX[j])/2;
else ballVX[j] = abs(ballVX[i]+ballVX[j])/2;
if (ballY[j] >= ballY[i]) ballVY[i] = -abs(ballVY[i]+ballVY[j])/2;
else ballVY[j] = abs(ballVY[j]+ballVY[j])/2;
}
}
}
}
}
void releaseball() {
for (int i = 0 ; i <50 ;i ++) {
if (ballY[i] - ballR[i] / 2 >= h ) {
ballX[i] = 0;
ballY[i] = 0;
ballVX[i] = 0;
ballVY[i] = 0;
ballR[i] = 0;
}
}
}
void bigball(int i) {
ballX[i] = int(random(w/8*3)+w/8*3/2);
ballY[i] = w/8*3/2;
ballVX[i] = 3*cos(random(PI*2));
ballVY[i] = 0;
ballR[i] = w/8*3;
}
int count = 0;
void endgame() {
for (int i = 0 ; i <50 ;i ++) {
if (ballR[i] == 0 ) count++;
}
if (count == 50) {
stage = 10;
}
else count = 0;
}
void newball(int i, int k) {
switch (k) {
case 0 :
break;
default :
k = 0;
for (int j = 0 ; j < 50 ; j++) {
if (dist(ballX[j], ballY[j], ballX[i], ballY[i]) <= (ballR[i]/2 + ballR[j]/2)) if ( i != j) {
ballY[i] +=1;
k++;
}
}
if ( k != 0 ) newball(i, k);
else break;
}
}
99163134簡尉倫
遊戲名稱:BALLS BOMB!!
第一節
討論期中作業以及想法
第二節、第三節
將程式碼修改,新增封面和結束畫面、可以選取按鈕、跑分數。
float [] ballX = new float [50];
float [] ballY = new float [50];
float [] ballVX = new float [50];
float [] ballVY = new float [50];
float [] ballR = new float [50];
int h = 600;
int w = 600;
int test = 0;
int aa = 0, bb = 0;
int stage =0; //控制目前場景位置
PImage [] game = new PImage [11];
PImage bkImage ;
String [] name = new String [11];
int moteX = 0, moteY = 0, mote = 0; //切割按鈕位置用
int checkanswer = 0; //title控制按鈕
int checktime = 0; //讓大球跑一遍
void setup() {
size(h, w);
for (int i = 0 ; i < 11; i++) {
name[i] = "title"+ i + ".png";
game[i] = loadImage(name[i]);
}
bkImage = loadImage("bk.png");
}
void draw() {
switch(stage) {
case 0:
image(bkImage, 0, 0, w, h);
image(game[0], w/8, h/8, w/8*6, h/8);
for (int i=1 ; i<=4;i++) {
image(game[i], w/4 + w/8, h/8*(2+i), w/2-(w/4), h/16);
}
moteX = mouseX - w/4 - w/8;
moteY = mouseY - h/8*3;
if ( moteX >= 0 && moteX /(w/4) == 0 ) {
mote = moteY / (h/8/2)+2;
if ( mote%2 == 0 && mote < 9 && moteY > 0) {
image(game[mote/2+4], w/4+ w/8, h/8*(2+mote/2), w/2-(w/4), h/16);
checkanswer = mote/2;
}
else checkanswer =0;
}
checktime = 0;
aa = 0;
bb = 0;
break;
case 1:
background(255);
noStroke();
fill(0, 255, 255);
if (checktime==0) {
ballX[0] = w/8*4 ;
ballY[0] = w/8*3/2;
ballVX[0] = 0 ;
ballVY[0] = 0.5;
ballR[0] = w/8*3;
checktime++;
}
for (int i = 0;i<50;i++) {
ellipse(ballX[i], ballY[i], ballR[i], ballR[i]);
if (ballX[i] != 0) ballVY[i] +=0.15;
ballX[i] += ballVX[i];
ballY[i] += ballVY[i];
}
attack();
balls();
releaseball();
fill(255, 0, 0);
textSize(20);
text("grade:" + aa, 20, 20, 100, 50);
endgame();
break;
case 2 :
break;
case 3 :
text("grade:" + aa, 20, 20, 100, 50);
break;
case 4:
exit();
break;
case 10 :
background(0);
fill(255, 0, 0);
textSize(100);
text("GAME OVER!!", w/4, h/4-h/8, w/2, h/2);
fill(255, 128, 0);
textSize(50);
if (bb<aa) {
bb++;
}
if (bb/1000!=0) text("grade:" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
else if (bb/100!=0) text("grade:0" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
else if (bb/10!=0) text("grade:00" +bb, w/4, h*4/8+h/16, w/8*7, h/8);
else text("grade:000" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
image(game[10],w/4-w/8, h/8*6, w/2-(w/4), h/16);
image(game[8],w/2+w/8, h/8*6, w/2-(w/4), h/16);
if (mouseX >= w/4-w/8 && mouseX <= w/2 - w/8 && mouseY >= h/8*6 && mouseY <= h/8*6 + h/16){
image(game[9],w/4-w/8, h/8*6, w/2-(w/4), h/16);
checkanswer =1;
}else if(mouseX >= w/2+w/8 && mouseX <= w - w/8 && mouseY >= h/8*6 && mouseY <= h/8*6 + h/16){
image(game[4],w/2+w/8, h/8*6, w/2-(w/4), h/16);
checkanswer =2;
}else checkanswer =0;
break;
}
}
void keyPressed() {
switch(stage) {
case 1:
break;
}
}
void mousePressed() {
switch(stage) {
case 0:
if (checkanswer == 1) stage =1;
if (checkanswer == 2) stage =2;
if (checkanswer == 3) stage =3;
if (checkanswer == 4) stage =4;
break;
case 1:
for (int i = 0;i<50;i++) {
if (dist (ballX[i], ballY[i], mouseX, mouseY)<=(ballR[i]/2)) {
if (ballR[i]/2 <= 15 && ballR[i]/2 != 0) {
aa += int (w*9/8/ ballR[i]);
bigball(i);
}
else {
aa += int (w*9/8 / ballR[i]);
if ((mouseX - ballR[i]/10) - ballR[i]*1/3 <= 0) {
ballY[i] = ballY[i];
ballVY[i] = -ballVY[i] + random(1);
ballR[i] = ballR[i]*2/3;
}
else {
ballX[i] = mouseX - ballR[i]/10;
ballY[i] = ballY[i];
ballVX[i] = -3*cos(random(PI/2));
ballVY[i] = -ballVY[i] + random(1);
ballR[i] = ballR[i]*2/3;
}
newball(i, 1);
for (int j = 0 ; j < 50 ; j ++ ) {
if (ballX[j] == 0.0 && ballY[j] == 0.0 ) {
test ++ ;
}
if (test != 0) {
if ((mouseX + ballR[i]) + ballR[i]/2 >= w) {
ballX[j] = ballX[i];
ballY[j] = ballY[i]+ballR[i];
ballVY[j] = ballVY[i]+random(1);
ballVX[j] = 3*cos(random(PI/2)) ;
ballR[j] = ballR[i];
}
else {
ballX[j] = mouseX + ballR[i];
ballY[j] = ballY[i];
ballVX[j] = 3*cos(random(PI/2)) ;
ballVY[j] = ballVY[i]+random(1);
ballR[j] = ballR[i];
}
newball(j, 1);
test=0;
break;
}
}
}
}
}
break;
case 2:
stage = 0;
break;
case 3:
stage = 0;
break;
case 10:
if (checkanswer == 1) stage = 0;
if (checkanswer == 2) exit();
break;
}
}
void attack() {
for (int i=0 ; i <50 ; i++ ) {
if ( ballX[i] - ballR[i]/2 <= 0 || ballX[i] + ballR[i]/2 >= w) {
ballVX[i] = -ballVX[i];
}
}
}
void balls() {
for (int i = 0 ; i <50 ;i ++) {
for (int j = i ; j <50 ; j ++) {
if (dist(ballX[j], ballY[j], ballX[i], ballY[i]) <= (ballR[i]/2 + ballR[j]/2) ) {
if (i!=j) {
if (ballX[j] >= ballX[i]) ballVX[i] = -abs(ballVX[i]+ballVX[j])/2;
else ballVX[j] = abs(ballVX[i]+ballVX[j])/2;
if (ballY[j] >= ballY[i]) ballVY[i] = -abs(ballVY[i]+ballVY[j])/2;
else ballVY[j] = abs(ballVY[j]+ballVY[j])/2;
}
}
}
}
}
void releaseball() {
for (int i = 0 ; i <50 ;i ++) {
if (ballY[i] - ballR[i] / 2 >= h ) {
ballX[i] = 0;
ballY[i] = 0;
ballVX[i] = 0;
ballVY[i] = 0;
ballR[i] = 0;
}
}
}
void bigball(int i) {
ballX[i] = int(random(w/8*3)+w/8*3/2);
ballY[i] = w/8*3/2;
ballVX[i] = 3*cos(random(PI*2));
ballVY[i] = 0;
ballR[i] = w/8*3;
}
int count = 0;
void endgame() {
for (int i = 0 ; i <50 ;i ++) {
if (ballR[i] == 0 ) count++;
}
if (count == 50) {
stage = 10;
}
else count = 0;
}
void newball(int i, int k) {
switch (k) {
case 0 :
break;
default :
k = 0;
for (int j = 0 ; j < 50 ; j++) {
if (dist(ballX[j], ballY[j], ballX[i], ballY[i]) <= (ballR[i]/2 + ballR[j]/2)) if ( i != j) {
ballY[i] +=1;
k++;
}
}
if ( k != 0 ) newball(i, k);
else break;
}
}
遊戲介面
遊戲結束畫面以及算分數
最後還有進階遊戲和遊戲說明還沒有完成,預計還會加背景音樂,讓遊戲更生動有趣。
2013年10月27日 星期日
第8週上課
1.
吃掉小老鼠
會有壞老鼠出來
2.
被壞老鼠碰到~就死掉
3.
小老鼠碰到牆壁會反彈
float [] msX=new float[5], msY=new float[5];
float []msVX=new float[5], msVY=new float[5];
int []scolor=new int[5];
int top=0, catX=mouseX, catY=mouseY, S=100;
PImage ms, cat, badms;
void setup() {
size(600, 600);
ms=loadImage("http://scitech.people.com.cn/mediafile/200807/07/F200807070850442343926401.jpg");
cat=loadImage("http://max218.com/wp-content/uploads/2013/02/%E8%B2%93.jpg");
badms=loadImage("http://www.icoou.com/uploadfile_20091016/2010/12/28/20101228125512809.jpg");
for (int i=0;i<5;i++) {
newms(i);
scolor[i]=0;
}
}
int bad=0;
void draw() {
if (bad==1) {
background(255, 0, 0);
for (int i=0;i<5;i++) {
msVX[i]=0;
msVY[i]=0;
}
}
else background(0);
image(cat, mouseX-50, mouseY-50, 100, 100);
for (int i=0;i<5;i++) {
if (scolor[i]==0) // the ms image
image(ms, msX[i], msY[i], 50, 50);
else if (scolor[i]==1) // the ms image to the bad ms image
image(badms, msX[i], msY[i], 100, 100);
msX[i]+=msVX[i];
msY[i]+=msVY[i];
if (msX[i]<0 || msX[i]>600 ||msY[i]<0 || msY[i]>600) //change the direction
{
if (msX[i]<0)
{
msVX[i]=-msVX[i];
}
if (msY[i]<0)
{
msVY[i]=-msVY[i];
}
if (msX[i]>600)
{
msVX[i]=-msVX[i];
}
if (msY[i]>600)
{
msVY[i]=-msVY[i];
}
//newms(i); //call new one
}
if (dist(msX[i], msY[i], catX-30, catY-30)<S) //cat eat the ms and ms become badms
{
if (scolor[i]==1)
{
bad=1;
}
else
scolor[i]=1;
newms(i);
msVX[i]=-msVX[i];
msVY[i]=-msVY[i];
}
//bad=1;
}
}
void newms(int i) {
float angle=random(2*PI);
msVX[i]=cos(angle);
msVY[i]=sin(angle);
int dir=int(random(4));
if (dir==0) {
msX[i]=random(600);
msY[i]=0;
}
else if (dir==1) {
msX[i]=random(600);
msY[i]=600;
}
else if (dir==2) {
msY[i]=random(600);
msX[i]=0;
}
else if (dir==3) {
msY[i]=random(600);
msX[i]=600;
}
}
void mouseMoved() {
catX=mouseX;
catY=mouseY;
}
訂閱:
文章 (Atom)
























