资源简介

用OpenGL库写的一个小球落地后弹起的程序,并且无速度损失,弹起到起始高度,如果你修改起始x方向速度xstep的初值,小球可以边跳跃边前进,并且碰到边框会反弹回来。为了验证弹起高度是否等于原来高度,我画了两条红色基准线,你会看到两条线一次又一次的重合。

资源截图

代码片段和文件信息

#include 
#include “gl/glut.h“
#include 
#include 
#include 

// 参数指定正方形的位置和大小
float xsite = 100.0;
float ysite = 200.0;
GLsizei rsize = 20;

// 正方形运动变化的步长
float xstep = 2.0f;
float ystep = 0.0f;

// 窗口的大小
float windowWidth = 500;
float windowHeight = 400;

int TIME=13;

inline void myArc(int xint yint aint bint start_angleint end_angledouble frdouble fgdouble fb)
{
int angle;
const double pi = acos(-1);
if(fr>=0)
{

glBegin(GL_TRIANGLE_FAN);
glColor3d(frfgfb);
glVertex2i(xy);
for(angle = start_angle; angle <= end_angle; angle = angle + 1)
{
int px = x + a*cos(angle/180.0 *pi);
int py = y + b*sin(angle/180.0 *pi);
glVertex2i(pxpy);
}
glEnd();
}
else
{
glBegin(GL_LINE_STRIP);
for(angle = start_angle; angle <= end_angle; angle = angle + 1)
{
int px = x + a*cos(angle/180.0 *pi);
int py = y + b*sin(angle/180.0 *pi);
glVertex2i(pxpy);
}
glEnd();
}

}

void drawLine(int Linex1int Liney1int Linex2int Liney2)
{

glColor3f(1.0f  0.0f  0.0f); //RGB
glBegin(GL_LINES);
{
glVertex2i(Linex1Liney1);
glVertex2i(Linex2Liney2);
}
glEnd();
glFlush();
}

inline void myCircle(int xint yint radiusdouble frdouble fgdouble fb)
{
myArc(xyradiusradius0360frfgfb);
drawLine(0ywindowWidthy);
}

void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f 0.0f 0.0f);
//glRectf(xsite ysite xsite+rsize ysite+rsize);
myCircle(xsiteysitersize01.01.0);
drawLine(0200windowWidth200);
//清空命令缓冲区并交换帧缓存
glutSwapBuffers();
}

void ChangeSize(GLsizei w GLsizei h)
{
if(h == 0) h = 1;

glViewport(0 0 w h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

if (w <= h) 
{
windowHeight = 300.0f*h/w;
windowWidth = 300.0f;
}
    else 
{
windowWidth = 300.0f*w/h;
windowHeight = 300.0f;
}
glOrtho(0.0f windowWidth 0.0f windowHeight 1.0f -1.0f);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void TimerFunction(int value)
{
// 处理到达窗口边界的球,使之反弹
if(xsite+rsize > windowWidth || xsite-rsize < 0){
if(xstep>0)xstep = -xstep;
}
if(ysite+rsize > windowHeight || ysite-rsize < 0){
if(ystep<0)
ystep = -(ystep-0.205);
}
if(xsite-rsize < 0) xstep = -xstep-0.1;
if(ysite > windowHeight-rsize) ysite = windowHeight-rsize;

// 根据步长修改正方形的位置
    ystep = ystep-0.5*450*0.030*0.030;
xsite += xstep;
ysite += ystep;

// 用新坐标重新绘图
    glutPostRedisplay();
glutTimerFunc(TIMETimerFunction 1);
}

void SetupRC(void)
{
//设置窗口清除色为白
glClearColor(1.0f 1.0f 1.0f 1.0f); 
}

void main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow(“Bounce“);
glutDisplayFunc(RenderScene);
    glutReshapeFunc(ChangeSize);
    glutTimerFunc(TIME TimerFunction 1);
SetupRC();
glutMainLoop();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3014  2012-04-13 14:30  BallGame\BallGame.cpp

     文件       3425  2012-04-13 10:24  BallGame\BallGame.dsp

     文件        539  2012-04-13 10:25  BallGame\BallGame.dsw

     文件      50176  2012-04-13 14:37  BallGame\BallGame.ncb

     文件      53760  2012-04-13 14:37  BallGame\BallGame.opt

     文件        692  2012-04-13 14:30  BallGame\BallGame.plg

     文件    1999872  2012-04-13 09:32  BallGame\Debug\BallGame.bsc

     文件     180314  2012-04-13 14:29  BallGame\Debug\BallGame.exe

     文件     267608  2012-04-13 14:29  BallGame\Debug\BallGame.ilk

     文件      21256  2012-04-13 14:30  BallGame\Debug\BallGame.obj

     文件    3700532  2012-04-13 14:12  BallGame\Debug\BallGame.pch

     文件     476160  2012-04-13 14:29  BallGame\Debug\BallGame.pdb

     文件          0  2012-04-13 09:32  BallGame\Debug\BallGame.sbr

     文件     230400  2012-04-13 14:30  BallGame\Debug\vc60.idb

     文件      77824  2012-04-13 14:30  BallGame\Debug\vc60.pdb

     文件      60468  1998-08-13 02:54  BallGame\gl\FGL.H

     文件       7273  1998-08-13 02:54  BallGame\gl\FGLU.H

     文件      10152  1998-08-13 02:54  BallGame\gl\FGLUT.H

     文件      71555  1997-11-07 02:34  BallGame\gl\gl.h

     文件       5150  1998-08-13 02:54  BallGame\gl\GLSMAP.H

     文件      14367  1997-10-31 02:18  BallGame\gl\glu.h

     文件      20844  1998-08-13 02:54  BallGame\gl\GLUT.H

     文件       8874  1998-08-13 02:54  BallGame\gl\TUBE.H

     文件     180224  1999-07-29 15:48  BallGame\GLUT32.DLL

     文件      27096  1999-07-29 15:48  BallGame\GLUT32.LIB

     文件      35606  1997-10-31 02:18  BallGame\lib\glu.lib

     文件      11056  1998-08-13 02:49  BallGame\lib\GLUT\capturexfont.c

     文件       2277  1998-08-13 02:46  BallGame\lib\GLUT\GLUT.DEF

     文件     180224  1999-07-29 15:48  BallGame\lib\GLUT\GLUT32.DLL

     文件      17306  1999-07-29 15:48  BallGame\lib\GLUT\GLUT32.EXP

............此处省略79个文件信息

评论

共有 条评论