week11
第一步 畫出很多格子 填色填字
4*6的格子
void setup(){
size(600,400);
}
void draw(){
background(255);
for(int i=0; i<4;i++){ ///y
for(int j=0; j<6;j++){ ///x
fill(#F5B4B4);rect(j*100,i*100,100,100);
fill(0); text("Hello", j*100+25, i*100+50);
}
}
}
第二步 將格子內文字換成隨機數字
隨機數字 value[i][j]
void setup(){
size(600,500);
for(int i=0; i<4;i++){
for(int j=0; j<6;j++){
value[i][j] = int(random(40));
}
}
}
int [][] value = new int[4][6];
void draw(){
background(255);
for(int i=0; i<4;i++){
for(int j=0; j<6;j++){
fill(#F5B4B4);rect(j*100,i*100,100,100);
fill(0); text(value[i][j], j*100+25, i*100+50);
}
}
}
第三步 不出現重複數字
每次不重複交換兩個
void setup(){
size(600,500);
for(int i=0; i<4;i++){
for(int j=0; j<6;j++){
value[i][j] = i*6+j+10;
}
}
for(int k=0;k<2;k++){
int i=int(random(4)), j=int(random(6));
int i2=int(random(4)), j2=int(random(6));
int temp = value[i][j];
value[i][j] = value[i2][j2];
value[i2][j2] = temp;
}
}
int [][] value = new int[4][6];
void draw(){
background(255);
for(int i=0; i<4;i++){
for(int j=0; j<6;j++){
fill(#F5B4B4);rect(j*100,i*100,100,100);
fill(0); text(value[i][j], j*100+25, i*100+50);
}
}
}
第四步 轉場
每一關顏色不一樣
int state = 0;//0:white,1:red, 2:blue
void setup(){
size(400,400);
}
void draw(){
if(state==0){
background(255);
fill(0); text("Click to start",80,200);
}
else if(state==1){
background(255,0,0);
}
else if(state==2){
background(0,0,255);
}
}
第五步 換關
第一關顏色是紅色,當灰色方塊碰到排色方塊就換下一關
int state = 0;
void setup(){
size(400,400);
}
int x=50,y=50;
void draw(){
if(state==0){
background(255);
fill(0); text("Click to start",80,200);
}
else if(state==1){
background(255,0,0);
fill(255); rect(300,50,50,50);
fill(128); rect(x,y,50,50);
}
else if(state==2){ //倒數10秒回第一關
background(0,0,255);
}
}
void mousePressed(){
if(state==0) state=1;
}
void keyPressed(){
if(state==1 && keyCode==RIGHT){
x+=10;
if(x==300)state=2;
}
}
第六步 回到第一關
第二關破完會跳回第一關
int state = 0;
void setup(){
size(400,400);
}
int x=50,y=50,t=100;
void draw(){
if(state==0){
background(255);
fill(0); text("Click to start",80,200);
x=50;
}
else if(state==1){
background(255,0,0);
fill(255); rect(300,50,50,50);
fill(128); rect(x,y,50,50);
t = 100;
}
else if(state==2){
background(0,0,255);
fill(255,255,0);text("Wait "+ t, 80,200);
t--;
if(t==0) state= 0;
}
}
void mousePressed(){
if(state==0) state=1;
}
void keyPressed(){
if(state==1 && keyCode==RIGHT){
x+=10;
if(x==300)state=2;
}
}
第七步 射擊曲線
籃球機投籃
PImage imgRack;
void setup(){
size(300,300);
imgRack = loadImage("rack.jpg");
}
void draw(){
background(255);
image(imgRack,0,0);
if(mousePressed){
fill(255); ellipse(posX,posY,20,20);
line(posX,posY,mouseX,mouseY);
}
fill(#FFA652); ellipse(mouseX,mouseY,20,20);
}
float posX = -100,posY = -100;
void mousePressed(){
posX=mouseX;
posY=mouseY;
}
第八步 拋物線
籃球機投籃,球飛出去
PImage imgRack;
void setup(){
size(300,300);
imgRack = loadImage("rack.jpg");
}
void draw(){
background(255);
image(imgRack,0,0);
if(flying){
fill(#FFA652); ellipse(x,y,20,20);
x+=vx;
y+=vy;
vy+=0.98;
}
else{
x=mouseX;
y=mouseY;
if(mousePressed){
fill(255); ellipse(posX,posY,20,20);
line(posX,posY,x,y);
}
}
fill(#FFA652); ellipse(x,y,20,20);
}
boolean flying = false;
float x,y,vx,vy;
float posX = -100,posY = -100;
void mousePressed(){
x=posX=mouseX;
y=posY=mouseY;
flying = false;
}
void mouseReleased(){
vx = posX-mouseX;
vy = posY-mouseY;
flying = true;
}
第九步 遊戲結束暫停
PImage imgRack;
void setup(){
size(300,300);
imgRack = loadImage("rack.jpg");
}
boolean gameOver=false;
void keyPressed(){
gameOver = true;
}
void draw(){
background(255);
image(imgRack,0,0);
if(flying){
if(! gameOver){
x+=vx;
y+=vy;
vy+=0.98;
}
}
else{
x=mouseX;
y=mouseY;
if(mousePressed){
fill(255); ellipse(posX,posY,20,20);
line(posX,posY,x,y);
}
}
fill(#FFA652); ellipse(x,y,20,20);
}
boolean flying = false;
float x,y,vx,vy;
float posX = -100,posY = -100;
void mousePressed(){
x=posX=mouseX;
y=posY=mouseY;
flying = false;
}
void mouseReleased(){
vx = posX-mouseX;
vy = posY-mouseY;
flying = true;
}
第十步 踩地雷
int[][] mine = new int[9][9];
void setup(){
size(450,450);
for(int i=0; i<9;i++) mine[i][0] = 9;
for(int k=0;k<1000;k++){
int i = int(random(9)), j = int(random(9));
int i2 = int(random(9)), j2 = int(random(9));
int temp = mine[i][j];
mine[i][j] = mine[i2][j2];
mine[i2][j2] = temp;
}
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(mine[i][j]==9){
addNumber(i-1,j-1);
addNumber(i-1,j);
addNumber(i-1,j+1);
addNumber(i,j-1);
addNumber(i,j+1);
addNumber(i+1,j-1);
addNumber(i+1,j);
addNumber(i+1,j+1);
}
}
}
}
void addNumber(int i, int j){
if(i<0 || j<0 || i>=9 || j>=9) return;
if(mine[i][j]!=9) mine[i][j]++;
}
void draw(){
for(int i=0; i<9;i++){
for(int j=0;j<9;j++){
if(mine[i][j]==9) fill(255,128,128);
else fill(255);
rect(j*50,i*50,45,45);
if(mine[i][j]!=0){
fill(0); text(""+mine[i][j], j*50+23, i*50+23, 45, 45);
}
}
}
}












沒有留言:
張貼留言