2015年4月9日 星期四

week07_鄭庭峰

1. 製作鍵盤能打字

#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();




2.能發出聲音   (WAV下載)

#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("散彈槍.wav", NULL, SND_ASYNC); ///發出聲音
        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();
}



3.音階

以上所有聲音檔都要放在bin裡面!!

void keyboard(unsigned char key, int x, int y)
{
    if(key=='a')
    {
        PlaySound("散彈槍.wav", NULL, SND_ASYNC); ///發出聲音
        printf("aaaaa\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); ///發出聲音
}




4.滑鼠控制   (全部程式碼)

#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("散彈槍.wav", NULL, SND_ASYNC); ///發出聲音
        printf("aaaaa\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();
}










沒有留言:

張貼留言