今天又回到我們S5131來製作電腦圖學
其實前幾天有和幾個大肆學長討論
我們之後到底要做什摩
想說圖學比較屬於設計
如果偏向傳播領域的部分可以善加利用
那我們就來好好學習這個禮拜的課程吧ㄏㄏ
第一節課
第一節課老師教我們國外的某個課程
互評課程 自評課程 (peer assessment & self assessment)
所以我們就把各位同學的作業給我們看的
將圖片存下來並且回傳給老師評分
所以我就將圖片存下來囉 yaya~~~
在進入這節課尾聲
在進入這節課尾聲
老師大概用了一分半 ...
對沒錯 一分半一分半一分半一分半一分半
我有計時很誇張
使用keyboard 和 mouse來操控囉 ㄎㄎ
看似平淡無奇的程式碼
執行之後
怎麼還是跟之前做的一樣
一個茶壺ㄏㄏ 真的ㄏㄏ
但是 神奇的來了~~~~~~
嘿嘿
有沒有看到不一樣的地方呢?
再一次
有看到了吧
出現ㄖ aaaaa bbbbb
因為有用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();
}
第二節課
第二節課除了上一節課新教的東西之外
我們多加了一個撥放音效
可是blog沒有辦法播放音效
那大家就複製我的程式碼來跑跑看吧ㄎㄎ
廢話不多說
直接給大家看
水噢水噢
雖然沒辦法給大家聽到聲音
但是有沒有看到不一樣的東西呢
好啦 其實我是用了kiss音效 ㄏㄏ
對了 講一下小重點
目前這個方式只能撥放 .wav 的音樂檔
如果要撥放其他的像是 .mp3 .mp4 檔案
就要使用其他的方式囉
然後必須要把音樂檔案放到我們freeglut-MinGW資料夾裡面的bin資料夾
因為必須使用裡面的freeglut.dll檔案
這點要記得噢ㄎㄎ
再來就是來製作鋼琴吧ㄎㄎ
好啦 因為不能撥放
只能這樣子給大家看囉 ㄎㄎ
因為的.wav一樣放在bin裡面噢 ㄎㄎ
第三節課
最後來個厲害的
這就是傳說中的
小茶壺上下移動 哈哈
而且不只是只有顯示移動而已噢
他還會顯示UP DOWN UP DOWN
厲害吧ㄎㄎ
程式碼如下
#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("kiss.wav",NULL ,SND_ASYNC);
printf("啾啾啾啾啾啾 kiss kiss\n");
}
{/// 1-7DoReMiFaSolLaSi
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);
glutMainLoop();
}
好啦 因為不能撥放
只能這樣子給大家看囉 ㄎㄎ
因為的.wav一樣放在bin裡面噢 ㄎㄎ
第三節課
最後來個厲害的
這就是傳說中的
小茶壺上下移動 哈哈
而且不只是只有顯示移動而已噢
他還會顯示UP DOWN UP DOWN
厲害吧ㄎㄎ
程式碼如下
#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("kiss.wav",NULL ,SND_ASYNC);
printf("啾啾啾啾啾啾 kiss kiss\n");
}
{/// 1-7DoReMiFaSolLaSi
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);
glutMainLoop();
}
YAYA成功了
大家可以自己試試看噢ㄎㄎ
然後今天的課程就結束了
又是收穫滿滿的一天ㄎㄎ
沒有留言:
張貼留言