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;
}
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;
}
#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;
}
#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;
}
#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;
}






沒有留言:
張貼留言