2023年5月3日 星期三

Orangutan - 第十二週 - 檔案file、鍵盤、滑鼠vs角度


=========================================================================

TWELFTH

一、檔案

1.新開一個空白檔案,File=>New=>Empty file

2.將檔案儲存為week12-1_printf_fprintf.cpp

3.存在桌面的file.txt開啟會顯示文字,執行小黑視窗時也會出現
以下為上面執行的程式碼
#include <stdio.h> int main() {///檔案指標 fout = 開檔案("檔名", "用甚麼模式"); FILE * fout = fopen("file.txt", "w");///:write printf("Hello World\n"); fprintf(fout,"Hello World在檔案裡\n");; }


4.開一個新的空白檔案並命名為week12-2_scanf_fscanf.cpp

5.執行完以下程式碼就可以印出剛剛所output的文字
以下為上面執行的程式碼
#include <stdio.h> int main() { FILE * fin = fopen("file.txt", "r"); char line[100]; fscanf(fin, "%s", line); printf("從file.txt讀到了: %s\n",line); fscanf(fin, "%s", line); printf("從file.txt讀到了: %s\n",line); }

6.開一個新的空白檔案並命名為
week12-3_many_numbers_scanf_printf_fscanf_fprintf.cpp

7.以下為執行結果的程式碼
#include <stdio.h> int main() { int a[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; int b[10] = {}; FILE * fout = fopen("file3.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("file3.txt", "r"); for(int i=0;i<10;i++){ fscanf(fin, "%d ", &b[i]); printf("b%d:%d ", i, b[i]); } fclose(fin); }


二、滑鼠、鍵盤


1.開一個GLUT專案,並命名為week12-4_keyboard_mouse

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) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("Week12"); glutDisplayFunc(display); glutMouseFunc(mouse); glutMainLoop(); }

3.可以使用滑鼠點按黑色部分讓茶壺移動

4.將原先的程式碼再增加紅框中的程式碼

5.執行後就可以使用滑鼠、鍵盤移動
(鍵盤的移動是依照滑鼠曾做過的軌跡)

6.要改執行目錄,Project=>Properties=>

7.Build targets=>Debug、Release=>working dir改成.

8.將freeglut中的freeglut.dll檔案放到執行目錄中

以下為上方程式碼
#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) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("Week12"); glutDisplayFunc(display); glutMouseFunc(mouse); glutKeyboardFunc(keyboard); glutMainLoop(); }

9.改檔名,
Project=>Properties=>

10.可以在Title的部分改檔名




































沒有留言:

張貼留言