STEP01
1.打開CodeBlock,開啟一個空白檔案(week12-1)
2.打上程式碼:
#include <stdio.h>
int main()
{
FILE * fout = fopen("file.txt", "w");///w:write
printf("Hello World\n");
fprintf(fout, "Hello World在檔案裡\n");
}
注:fout是檔案指標,fopen開檔案(檔名, 用什麼模式)
3.執行除了跳出Hello World的小黑,另外會開啟file.txt,內容結果如下:
1.再開啟一個新的空白檔案(week12-2)
2.打上程式碼:
#include <stdio.h>
int main()
{
FILE * fin = fopen("file.txt", "r");///r:read
char line[100];
fscanf(fin, "%s",line);
printf("從file.txt讀到了:%s\n",line);
fscanf(fin, "%s",line);
printf("從file.txt讀到了:%s\n",line);
}
3.執行得到結果:
STEP03
1.開啟一個新的空白檔案(week12-3)
2.week12-3程式碼如下:
#include <stdio.h>
int main()
{
int a[10]={10,20,30,40,50,60,70,80,90,100};
int b[10]={};
FILE*fout=fopen("file2.txt","w");
for(int i=0;i<10;i++){
printf("%d ",a[i]);
fprintf(fout,"%d ",a[i]);
}
printf("\n");
fprintf(fout,"\n");
fclose(fout);//使用中的關閉才能在下面使用
FILE*fin=fopen("file2.txt","r");
for(int i=0;i<10;i++){
fscanf(fin," %d",&b[i]);
printf("b%d:%d ",i,b[i]);
}
fclose(fin);
}
3.執行結果如下:
STEP04
1.開啟一個GLUT專案(week12-4)
2.改造Week05-2的程式碼變成:
#include <stdio.h>
#include <GL/glut.h>
float teapotX=0, teapotY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN){
teapotX = (x-150)/150.0;
teapotY = (150-y)/150.0;
}
display();
}
int main(int argc, char *argv[])//main()主函式 進階版
{
glutInit(&argc,argv);//把參數送給glutInit初始化
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);//雙緩衝區+3D深度功能
glutCreateWindow("week12");//開GLUT視窗
glutDisplayFunc(display);//顯示用的函式
glutMouseFunc(mouse);
glutMainLoop();
}
得到根據滑鼠點擊位置移動的茶壺
STEP05
1.在week12-4程式碼的基礎上,加上一些程式,程式碼結果:
#include <stdio.h>
#include <GL/glut.h>
FILE * fout = NULL;
FILE * fin = NULL;
float teapotX=0, teapotY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN){
teapotX = (x-150)/150.0;
teapotY = (150-y)/150.0;
if(fout==NULL) fout = fopen("file4.txt","w");
fprintf(fout, "%f %f\n", teapotX, teapotY);
}
display();
}
void keyboard(unsigned char key,int x, int y)
{
if(fin==NULL){
fclose(fout);
fin = fopen("file4.txt","r");
}
fscanf(fin, "%f %f", &teapotX, &teapotY);
display();
}
int main(int argc, char *argv[])//main()主函式 進階版用
{
glutInit(&argc,argv);//把參數送給glutInit初始化
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);//雙緩衝區+3D深度功能
glutCreateWindow("week12");//開GLUT視窗
glutDisplayFunc(display);//顯示用的函式
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
2.執行結果測試:先用滑鼠點擊一個軌跡,按空白鍵確認是否照著剛才的軌跡再跑一次
3.在CodeBlocks project-properties 裡第二個Build target中工作執行目錄改成.
注:debug和release都要改,並記得save everything
4.把freeglut.dll複製到資料夾內
5.再執行是否成功
沒有留言:
張貼留言