Week13
1.俄罗斯方块
int[][]grid={
{1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1}
};
void one(int x,int y){
fill(255,0,0);
if(grid[y][x]==0) rect(x*25,y*25,25,25);//四周的墙
}
void setup(){
size(300,500);
}
void draw(){
background(0);
for(int x=0;x<12;x++){
for(int y=0;y<20;y++){
if(grid[y][x]==1) fill(128);
else if(grid[y][x]==2) fill(255,0,0);
else fill(0);
rect(x*25,y*25,25,25);
}
}
one(nowX,nowY);
if(frameCount%60==0){//方块向下移动
if(grid[nowY+1][nowX]==0) nowY++;
else{//石化
grid[nowY][nowX]=2;
nowX=6; nowY=1;
}
}
}
int nowX=6, nowY=1;
2.砍树人
int []tree=new int[30];//0:no 1:left 2:right
int pos=0;//0:left 1:right
void setup(){
size(300,600);
tree[0]=0;
for(int i=1;i<30;i++){
tree[i]=int(random(3));
}
}
void draw(){
if(gameOver){
background(255,0,0);
}
background(255,0,255);
for(int i=0;i<30;i++){
if(tree[i]==0){//empty
fill(#28C3E8); rect(100,500-i*100,100,100);
}else if(tree[i]==1){//left
fill(#28C3E8); rect(0,500-i*100,200,100);
}else if(tree[i]==2){//right
fill(#28C3E8); rect(100,500-i*100,200,100);
}
}
if(pos==0){
fill(255,0,0); ellipse(50,550,100,100);
}else if(pos==1){
fill(255,0,0); ellipse(250,550,100,100);
}
}
void keyPressed(){
if(keyCode==RIGHT){ pos=1; checkAndUpdate();}
if(keyCode==LEFT) { pos=0; checkAndUpdate();}
}
void checkAndUpdate(){
if(tree[1]==1 && pos==0) die();
else if(tree[1]==2 && pos==1) die();
else{
//score++;
for(int i=0;i<30-1;i++){
tree[i]=tree[i+1];
}
tree[29]=int(random(3));
}
}
void die(){
gameOver=true;
}
boolean gameOver=false;
3.弓箭传说
void setup(){
size(300,500);
}
float heroX=150,heroY=250;
float []arrowX=new float[24];
float []arrowY=new float[24];
float []arrowVX=new float[24];
float []arrowVY=new float[24];
boolean shooting=false;
void draw(){
background(255,204,84);
ellipse(heroX,heroY,50,50);
if(shooting){
for(int i=0;i<24;i++){
arrowX[i]+=arrowVX[i];
arrowY[i]+=arrowVY[i];
ellipse(arrowX[i],arrowY[i],10,10);
if(frameCount%10==0){
for(int k=23;k>0;k--){//后面子弹跟着跑
arrowX[k]=arrowX[k-1];
arrowY[k]=arrowY[k-1];
arrowVX[k]=arrowVX[k-1];
arrowVY[k]=arrowVY[k-1];
}
}
}
}
}
void mousePressed(){
shooting=true;
arrowX[0]=heroX;
arrowY[0]=heroY;
arrowVX[0]=-1;
arrowVY[0]=1;
}
4.小鸡过马路
int chinkID=0;
float []chinkX=new float[10];
float []chinkY=new float[10];
float []chinkVX=new float[10];
float []chinkVY=new float[10];
boolean []run=new boolean[10];
void setup(){
size(400,300);
for(int i=0;i<10;i++){
chinkX[i]=random(10,150-10);
chinkY[i]=random(10,300-10);
chinkVX[i]=random(-0.3,0.3);
chinkVY[i]=random(-0.3,0.3);
}
}
void draw(){
background(122,171,185);
fill(102,166,28);
rect(0,0,150,300);
for(int i=0;i<10;i++){
if(chinkID==i) strokeWeight(3);
else strokeWeight(1);
fill(255); ellipse(chinkX[i],chinkY[i],20,50);
chinkX[i]+=chinkVX[i];
chinkY[i]+=chinkVY[i];
if(chinkY[i]<0) chinkVY[i]=abs(chinkVY[i]);//圈住小鸡
if(chinkY[i]>300) chinkVY[i]=-abs(chinkVY[i]);
if(chinkX[i]<0) chinkVX[i]=abs(chinkVX[i]);
if(run[i]==false && chinkX[i]>150) chinkVX[i]=-abs(chinkVX[i]);//run为false可以出圈
}
}
void keyPressed(){//鸡的走动
int i=chinkID;
if(keyCode==RIGHT) {chinkVX[i]=1; chinkVY[i]=0;}
else if(keyCode==LEFT) {chinkVX[i]=-1; chinkVY[i]=0;}
else if(keyCode==UP) {chinkVX[i]=0; chinkVY[i]=-1;}
else if(keyCode==DOWN) {chinkVX[i]=0; chinkVY[i]=1;}
run[i]=true;
}
void mousePressed(){//点击更换鸡
for(int i=0;i<10;i++){
if(dist(mouseX,mouseY,chinkX[i],chinkY[i])<20) chinkID=i;
}
}
5.小朋友下楼梯
PImage imgBrick,imgBoard01;
float []boardX=new float[9];
float []boardY=new float[9];
void setup(){
size(600,400);
imgBrick=loadImage("brick.png");
imgBoard01=loadImage("board01.png");
for(int i=0;i<9;i++){
boardX[i]=random(15,400-15-80);
boardY[i]=i*40;
}
}
float rolling=0;//滚动的背景
void draw(){
rect(10,80,400,320);
for(int i=0;i<30;i++){
image(imgBrick,10,80+i*27-rolling);
image(imgBrick,400+10-13,80+i*27-rolling);
}
for(int i=0;i<9;i++){
image(imgBoard01,boardX[i],80+boardY[i]-rolling);
if(boardY[i]-rolling<0){//回收板子再利用
boardX[i]=random(15,400-15-80);
boardY[i]=boardY[i]+360;
}
}
rolling+=1.5;
}
6.一二三木头人
void setup(){
size(600,300,P3D);//openGL
noStroke();
genRandomTime();
}
void genRandomTime(){
time=millis()+random(3000,5000);
}
float time=0;
float angle=-90;
float speed=3;
void draw(){
background(#FFD436);
if(time<millis()){//要动了
//ghostMoving=true;
angle+=speed;
if(angle>=90){//鬼在看
angle=90;
time=millis()+3000;
speed=-speed;
}else if(angle<-90){
angle=-90;
genRandomTime();
speed=10;
}
}
ghost(angle);//看的角度,-90背对没看,0看前面
}
void ghost(float angle){
fill(237,137,63);
rect(100,100,100,100);
pushMatrix();
lights(); ortho();
translate(150,50);//把头移到上面去
rotateY(radians(angle));
fill(190,162,95);
sphere(50);
pushMatrix();
translate(40,-10,40);
fill(0); sphere(10);
popMatrix();
pushMatrix();
translate(-40,-10,40);
fill(0); sphere(10);
popMatrix();
popMatrix();
}
沒有留言:
張貼留言