使用vs2013进行编译
绘制家具关键代码如下:
//床
void draw_bed(void)
{
GLfloat x = 6;
GLfloat y1 = -7.5;
GLfloat y2 = -5;
GLfloat z1 = -19.9;
GLfloat z2 = -5;
//床头
glBegin(GL_QUADS);
glColor3f(0.f,0.54f,0.5f);
glVertex3f(x, y2, z1);
glVertex3f(-x, y2,z1);
glVertex3f(-x, y1,z1);
glVertex3f(x, y1, z1);
glEnd();
//床身
glBegin(GL_QUADS);
glColor3f(1.f,0.54f,0.5f);
glVertex3f(x, y1, z1);
glVertex3f(-x, y1,z1);
glVertex3f(-x, y1,z2);
glVertex3f(x, y1, z2);
glEnd();
glBegin(GL_QUADS);
glColor3f(1.f,0.54f,0.5f);
glVertex3f(-x, y1, z1);
glVertex3f(-x, -8.99,z1);
glVertex3f(-x, -8.99,z2);
glVertex3f(-x, y1, z2);
glEnd();
glBegin(GL_QUADS);
glColor3f(1.f,0.54f,0.5f);
glVertex3f(x, y1, z1);
glVertex3f(x, -8.99,z1);
glVertex3f(x, -8.99,z2);
glVertex3f(x, y1, z2);
glEnd();
glBegin(GL_QUADS);
glColor3f(1.f,0.54f,0.5f);
glVertex3f(-x, y1,z2);
glVertex3f(x, y1, z2);
glVertex3f(x, -8.99, z2);
glVertex3f(-x, -8.99,z2);
glEnd();
//枕头
glBegin(GL_QUADS);
glColor3f(1.0f,0.84f,0.5f);
glVertex3f(x-0.5, -7, z1+0.5);
glVertex3f(0.5, -7,z1+0.5);
glVertex3f(0.5, -7,-17);
glVertex3f(x-0.5, -7,-17);
glEnd();
glBegin(GL_QUADS);
glColor3f(1.0f,0.84f,0.5f);
glVertex3f(0.5, -7,-17);
glVertex3f(x-0.5, -7,-17);
glVertex3f(x-0.5, y1,-17);
glVertex3f(0.5, y1,-17);
glEnd();
glBegin(GL_QUADS);
glColor3f(1.0f,0.84f,0.5f);
glVertex3f(-x+0.5, -7, z1+0.5);
glVertex3f(-0.5, -7,z1+0.5);
glVertex3f(-0.5, -7,-17);
glVertex3f(-x+0.5, -7,-17);
glEnd();
glBegin(GL_QUADS);
glColor3f(1.0f,0.84f,0.5f);
glVertex3f(-0.5, -7,-17);
glVertex3f(-x+0.5, -7,-17);
glVertex3f(-x+0.5, y1,-17);
glVertex3f(-0.5, y1,-17);
glEnd();
//被子
glPushMatrix();
glTranslatef(0, -7.49, -10.5);
glScalef(10 * x, 100.1, 100);
glutSolidCube(1);
glPopMatrix();
}
// 空调
void draw_air_conditioning(void)
{
// bool tv_open = false;
glPushMatrix();
glTranslatef(-100, 50, 100);
// 空调
if (air_open){// 开空调
glPushMatrix();
glTranslatef(0, 10, -2);
glScalef( 8.3, 20, 86);
glColor3f(1.0, 1.0, 1.0);// 白色
glutSolidCube(1);
glLineWidth(4);
glColor3f(1, 1, 1);
glutWireCube(1);
glLineWidth(1);
glPopMatrix();
glPushMatrix();
glTranslatef(0, -1, 0);
glScalef( 0.001, 0.001, 83);
glColor3f(0.0, 0.0, 0.0);// 黑色
glutSolidCube(1);
glLineWidth(3);
glColor3f(0.0, 0.0, 0.0);
glutWireCube(1);
glLineWidth(1);
glPopMatrix();
glPushMatrix();
glTranslatef(3.0, -0.5, 0);
glScalef( 0.001, 0.001, 83);
glColor3f(0.0, 0.0, 0.0);// 黑色
glutSolidCube(1);
glLineWidth(3);
glColor3f(0.0, 0.0, 0.0);
glutWireCube(1);
glLineWidth(1);
glPopMatrix();
}else{// 关空调
glPushMatrix();
glTranslatef(0, 10, -2);
glScalef( 8.3, 20, 86);
glColor3f(1.0, 1.0, 1.0);// 白色
glutSolidCube(1);
glLineWidth(4);
glColor3f(1, 1, 1);
glutWireCube(1);
glLineWidth(1);
glPopMatrix();
}
glPopMatrix();
}
键盘交互:
void keyboard(unsigned char key, int x, int y) // Handle the keyboard events here
{
switch (key)// 获取键盘值
{
case '\033':
exit(0);
break;
case 'p': /*pause*/
option = 1;
break;
case '1': /*decrease light*/
option = 11;
break;
case '2': /*increase light*/
option = 12;
break;
case 's': /*switch on/off the light*/
option = 4;
break;
case '3':// 控制台灯 开
option = 2;// 看option==2
break;
case '5':// 时钟
option = 3;
break;
case '6':
option = 5;
break;
case '7':// 空调开
option = 13;
break;
case '8':// 空调关
option = 14;
break;
case 'q':// 椅子向外移动
option = 7;
break;
case 'w':// 椅子向内移动
option = 8;
break;
case 'e':// 柜子外移
option = 9;
break;
case 'r':// 柜子内移
option = 10;
break;
}
}
运行截图: