2022年5月23日 星期一

09160074 廖均翰 week14

 講義:https://jsyeh.org/3dcg10/

●寫檔

File-New-Empty file 新增一個空檔案,並輸入下列程式碼,會發現新增了一個文字檔
    #include <stdio.h>
    int main()
    {
        FILE*fout=fopen("file.txt","w+");
        printf("Hello World\n");
        fprintf(fout,"Hello World\n");
        fclose(fout);
    }





















新增week14-2空檔案,把剛才week14-1檔案的程式碼複製過來,並修改成下列程式碼
    #include <stdio.h>
    int main()
    {
        FILE*fout=fopen("file2.txt","w+");
        fprintf(fout,"angle1 %d\n",999);
        fclose(fout);
        char line[200];
        int a;
        FILE*fin=fopen("file2.txt","r");
        fscanf(fin,"%s %d",line,&a);
        printf("讀到了字串:%s 及整數%d\n",line,a);
        fclose(fin);
    }





















●TRT angle write and read

新增一個GLUT專案,把上週TRT的程式複製過來進行修改,最上頭要新增#include <stdio.h>(為了printf、fprintf、fopen、fclose...)並宣告函式myWrite,myWrite程式如下
void myWrite()
{
    if(fout==NULL) fout=fopen("file.txt","w+");
    for(int i=0;i<20;i++)
    {
        fprintf(fout,"%.2f ",angle[i]);
    }
}
並在motion函式中新增一myWrite();





















原本的程式碼小黑視窗沒有變化,所以在for迴圈中再新增一行printf("%.2f ",angle[i]);,為了讓視窗方便觀看,所以新增兩行\n,txt檔案在freeglut-bin中





















新增myRead函式,程式如下
void myRead()
{
    if(fout!=NULL)
    {
        fclose(fout);
        fout=NULL;
    }
    if(fin==NULL) fin=fopen("file.txt","r");
    for(int i=0;i<20;i++)
        fscanf(fin,"%f",&angle[i]);
    glutPostRedisplay();
}
上方FILE*fout=NULL要更改成FILE*fout=NULL,*fin=NULL;,下面keyboard函式要新增一行if(key=='r') myRead();





















●修改工作目錄

專案裡有cbp的檔案,按滑鼠右鍵開啟編輯,地11以及21行有working_dir,=後面修改成".",並且要複製freeglut裡的freeglut.dll到專案的目錄裡才能成功開啟





















●Timer

開啟新專案,建立timer函式,程式如下
void timer(int t)
{
    printf("鬧鐘%d,我起床了\n",t);
    printf("設定下一個鬧鐘\n");
    glutTimerFunc(2000,timer,t+1);
    printf("設好鬧鐘,再回去睡\n");
}
並先新增display函式可以建視窗





















新增#include <mmsystem.h>和PlaySound("do.wav",NULL,SND_ASYNC);就可以播放聲音


沒有留言:

張貼留言