2013年5月14日 星期二

劉宇馨的第十三週作業

1.
2.彈跳的茶壺
#include<stdio.h>
#include<GL/glut.h>
float x=-1,y=-1;
float dx=0.01,dy=0.05;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
printf("%f %f\n",x,y); 
glPushMatrix();
      glTranslatef(x,y,0);
      glutSolidTeapot(0.1);
    glPopMatrix();
    x+=dx;
    y+=dy;
    dy-=0.00098;
    if(y<-1)dy=-dy;
    if(x>1) dx=-dx;
    if(x<-1)dx=-dx;
    glutSwapBuffers();
}

int main()
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("a");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
    return 0;
}
3.加入彈跳聲

#include<windows.h>
#include<stdio.h>
#include<GL/glut.h>
float x=-1,y=-1;
float dx=0.01,dy=0.05;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
printf("%f %f\n",x,y);
glPushMatrix();
      glTranslatef(x,y,0);
      glutSolidTeapot(0.1);
    glPopMatrix();
    x+=dx;
    y+=dy;
    dy-=0.00098;
    if(y<-1)
{
dy=-dy*0.95;
PlaySound("bounce.wav",NULL,SND_ASYNC);
}
    if(x>1) dx=-dx;
    if(x<-1)dx=-dx;
    glutSwapBuffers();
}

int main()
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("a");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
    return 0;
}
4.mouse點一下,茶壺的x,y就會變成mousex,mousey
#include<GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>

float x=-1,y=-1;
float dx=0.01,dy=0.05;
void mouse(int button,int state, int mousex, int mousey)
{
x=(mousex-400)/400.0;
y=-(mousey-400)/400.0;//carefull
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
printf("%f %f\n",x,y); 
glPushMatrix();
      glTranslatef(x,y,0);
      glutSolidTeapot(0.1);
    glPopMatrix();
    x+=dx;
    y+=dy;
    dy-=0.00098;
    if(y<-1)
{
dy=-dy*0.95;
PlaySound("bounce.wav",NULL,SND_ASYNC);
}
    if(x>1) dx=-dx;
    if(x<-1)dx=-dx;
    glutSwapBuffers();
}

int main()
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(800,800);
glutCreateWindow("a");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
    return 0;
}

5.

#include<GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>

float x[20],y[20];
float dx[20],dy[20];
int nowTea=0;
void mouse(int button,int state, int mousex, int mousey)
{
x[nowTea]=(mousex-400)/400.0;
y[nowTea]=-(mousey-400)/400.0;//carefull
dx[nowTea]=0.01;
dy[nowTea]=0.01;
nowTea++;
if(nowTea>=20)nowTea=0;
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
printf("%f %f\n",x,y);
for(int i=0;i<20;i++)
{
glPushMatrix();
      glTranslatef(x[i],y[i],0);
      glutSolidTeapot(0.1);
    glPopMatrix();
    x[i]+=dx[i];
    y[i]+=dy[i];
    dy[i]-=0.00098;
    if(y[i]<-1)
{
dy[i]=-dy[i]*0.95;
PlaySound("bounce.wav",NULL,SND_ASYNC);
}
    if(x[i]>1) dx[i]=-dx[i];
    if(x[i]<-1)dx[i]=-dx[i];
}
    glutSwapBuffers();
}

int main()
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(800,800);
glutCreateWindow("a");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
    return 0;
}

6.爆炸

#include<GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>
#include<stdlib.h>

float x[20],y[20];
float dx[20],dy[20];
int nowTea=0;
void mouse(int button,int state, int mousex, int mousey)
{
for(int i=0;i<20;i++)
{
x[i]=(mousex-400)/400.0;
y[i]=-(mousey-400)/400.0;//carefull
dx[i]=(rand()%100-50)/500.0;
dy[i]=(rand()%100-50)/500.0;
//nowTea++;
//if(nowTea>=20)nowTea=0;
}
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
printf("%f %f\n",x,y);
for(int i=0;i<20;i++)
{
glPushMatrix();
      glTranslatef(x[i],y[i],0);
      glutSolidTeapot(0.1);
    glPopMatrix();
    x[i]+=dx[i];
    y[i]+=dy[i];
    dy[i]-=0.00098;
    if(y[i]<-1)
{
dy[i]=-dy[i]*0.95;
PlaySound("bounce.wav",NULL,SND_ASYNC);
}
    if(x[i]>1) dx[i]=-dx[i];
    if(x[i]<-1)dx[i]=-dx[i];
}
    glutSwapBuffers();
}

int main()
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(800,800);
glutCreateWindow("a");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
    return 0;
}






沒有留言:

張貼留言