2015年4月9日 星期四

胡佩君_week 07

今天第一件事是增加keyboard




#include <GL/glut.h>
#include <stdio.h>

void display()
{
    glutSolidTeapot(0.3);
    glFlush();
}

void keyboard(unsigned char key, int x, int y)
{
    if (key=='a') printf("aaaaa\n");
    if (key=='b') printf("bbbbb\n");
}

int main (int argc, char**argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("hello");

    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);

    glutMainLoop();
}






再來是把keyboard改成播音樂





但是要注意要把音檔放在bin裡面




#include <GL/glut.h>
#include <stdio.h>
#include <mmsystem.h>

void display()
{
    glutSolidTeapot(0.3);
    glFlush();
}

void keyboard(unsigned char key, int x, int y)
{
    if (key=='a') {
            PlaySound("Queen.wav", NULL, SND_ASYNC);
        printf("哈哈哈哈哈\n");
    }
    if (key=='b') printf("bbbbb\n");
}

int main (int argc, char**argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("hello");

    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);

    glutMainLoop();
}




再加上Do, Ra, Mi等
就可以用按鍵控制音效




#include <GL/glut.h>
#include <stdio.h>
#include <mmsystem.h>

void display()
{
    glutSolidTeapot(0.3);
    glFlush();
}

void keyboard(unsigned char key, int x, int y)
{
    if (key=='a') {
            PlaySound("Queen.wav", NULL, SND_ASYNC);
        printf("哈哈哈哈哈\n");
    }
    if (key=='1') PlaySound("Do.wav", NULL, SND_ASYNC);
    if (key=='2') PlaySound("Re.wav", NULL, SND_ASYNC);
    if (key=='3') PlaySound("Mi.wav", NULL, SND_ASYNC);
    if (key=='4') PlaySound("Fa.wav", NULL, SND_ASYNC);
    if (key=='5') PlaySound("Sol.wav", NULL, SND_ASYNC);
    if (key=='6') PlaySound("La.wav", NULL, SND_ASYNC);
    if (key=='7') PlaySound("Si.wav", NULL, SND_ASYNC);
}

int main (int argc, char**argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("hello");

    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);

    glutMainLoop();
}


最後 做了Specail key跟Mouse控制
可以用上下鍵 用滑鼠控制可以旋轉它 像Maya一樣





#include <GL/glut.h>
#include <stdio.h>
#include <mmsystem.h>

float teaY=0, rotX=0, rotY=0, oldX=0, oldY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
    glTranslatef(0,teaY,0);
    glRotatef(rotX,1,0,0);
    glRotatef(rotY,0,1,0);
    glutSolidTeapot(0.3);
    glPopMatrix();
    glFlush();
}

void keyboard(unsigned char key, int x, int y)
{
    if (key=='a') {
            PlaySound("Queen.wav", NULL, SND_ASYNC);
        printf("«¢«¢«¢«¢«¢\n");
    }
    if (key=='1') PlaySound("Do.wav", NULL, SND_ASYNC);
    if (key=='2') PlaySound("Re.wav", NULL, SND_ASYNC);
    if (key=='3') PlaySound("Mi.wav", NULL, SND_ASYNC);
    if (key=='4') PlaySound("Fa.wav", NULL, SND_ASYNC);
    if (key=='5') PlaySound("Sol.wav", NULL, SND_ASYNC);
    if (key=='6') PlaySound("La.wav", NULL, SND_ASYNC);
    if (key=='7') PlaySound("Si.wav", NULL, SND_ASYNC);
}
void special(int key, int x, int y)
{
    if (key==GLUT_KEY_DOWN){
        teaY-=0.1;
        printf("down\n");
    }
    else if (key==GLUT_KEY_UP){
        teaY+=0.1;
        printf("up\n");
    }
    glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
    oldX=x;
    oldY=y;

    if (GLUT_LEFT_BUTTON==button && GLUT_DOWN==state)
        printf("now left down\n");
    if (GLUT_RIGHT_BUTTON==button && GLUT_DOWN==state)
        printf("now right down\n");
}
void motion(int x, int y)
{
    rotX += y - oldY;
    rotY += x - oldX;
    oldX=x;
    oldY=y;
    glutPostRedisplay();
}
int main (int argc, char**argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("hello");

    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);

    glutSpecialFunc(special);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);

    glutMainLoop();
}

沒有留言:

張貼留言