环境介绍:
visual studio 2019 c++
键盘上下左右可控制小车移动,鼠标左键可倒车,鼠标右键可打开菜单
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include <iostream>
#include<graphics.h>
#include <glut.h>
using namespace std;
float delta_v = 0.0;
float r = 1.0, g = 1.0, b = 0.0;
float r1 = 0.0, g1 = 0.0, b1 = 0.0;
float P[16];
float M[16];
#define N 10 //线段最大条数
//************ 光线及材质的定义**************
GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 20.0, 20.0, 20.0, 0.0 };
GLfloat mat_specular1[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_diffuse1[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_ambient1[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess1 = { 10.0 };
GLfloat global_ambient[] = { 0.1,0.1,0.1,0.1 };
GLfloat vertices[][3] = { {-0.7,0,1},{0.7,0,1},{0.7,0,-1},{-0.7,0,-1},{-0.5,1,0.8},{0.5,1,0.8},{0.5,1,-0.8}, {-0.5,1,-0.8} };
void menu(int id) {
switch (id)
{
case (1):
exit(0);
break;
}
glutPostRedisplay();
}
void mouseMotion(GLint button, GLint state, GLint x, GLint y) //鼠标交互
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
glTranslatef(0, 0, 0.1 + delta_v);
glutPostRedisplay();
}
}
//***********车身颜色变化菜单************
void color_car_body_menu(int id)
{
switch (id) {
case(1):
r = 1.0; g = 0.0; b = 0.0;
break;
case(2):
r = 0.0; g = 1.0; b = 0.0;
break;
case(3):
r = 0.0; g = 0.0; b = 1.0;
break;
case(4):
r = 0.9; g = 0.1; b = 0.6;
break;
case(5):
r = 0.7; g = 0.5; b = 0.1;
break;
case(6):
r = 1.0; g = 0.0; b = 0.0;
break;
}
glutPostRedisplay();
}
//************车轮颜色变化菜单***************
void color_car_wheel_menu(int id)