见缝插针小游戏 (基于OPENGL)|计算机图形学
1.前言
最近开始学习图形学,试着用glut做了一个小游戏,也是之前见得蛮多的小游戏叫做见缝插针,基本上功能都实现了,可能还有些不足,之后有机会再改进,废话不多说,先上图


2.玩法
每次点击鼠标左键可以插入一针,每次插入完的针都会一直旋转,过程中要保证每插入一针,针与针不要碰撞,最后尽可能多的“见缝插针”
(听起来是不是很简单呢,确实也不难)
接下来就是代码部分,这里我直接把源码贴出来,还有一些里面的注意事项,以免你们拿到手不能直接运行
3.代码
#include<GL/glut.h>
#include<stdio.h>
#include <windows.h>
#include<math.h>
#define MAX_CHAR 128 // ASCII字符总共只有0到127,一共128种字符
#define PI acos(-1.0) // cos (pi)=-1 求一个反余弦就得到PI
#define SPEED (PI/360) // 针的旋转速度
#define NEEDLE_L 180 // 针的长度
void Init();
void Reshape(int w, int h);
void myDisplay();
void myIdle(void);
void MouseHit(int button, int state, int x, int y);
void DrawString(const char* str);
void DrawFrame(int number);
void Move(int number, int x, int y);
void Rotate(double* R, int num);
bool Pin(double* R, int num);
double radian[25] = {
0 }; //储存针的弧度
int Needle_N = 0; //针的个数
int n = 40; //多边形边数,n越大,越趋近圆
int win; //窗口返回值
int main(int argc,char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(480, 640);
win=glutCreateWindow("Game Demo 左键点击开始"); //基于圆的碰撞检测做出来的游戏
Init();
glutDisplayFunc(myDisplay)

本文介绍了一款基于OpenGL的游戏——见缝插针。玩家通过点击鼠标左键插入旋转的针,目标是在不使针相互碰撞的情况下尽可能多地插入针。文章提供了游戏的完整源代码,并解释了一些关键函数的作用。
最低0.47元/天 解锁文章
355





