講義: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);就可以播放聲音








沒有留言:
張貼留言