2021年5月31日 星期一

阿米君の電腦圖學小筆記_Week15

☆本週內容☆
使用fopen、fprintf 存檔案
程式碼:
#include <stdio.h>

int main(int argc, char** argv)    ///外掛 :printf、fprintf、fscanf、fopen
{
    FILE * fout=NULL;    ///指標 file output
    fout=fopen("檔名.txt","w+");   ///開啟檔案 檔名"txt" 模式:write

    printf(      "Hello World\n");
    fprintf(fout,"Hello World\n");   ///改裝 printf 變 fprintf
}



修改CodeBlocks檔案路徑

step1:右鍵開啟Notepad++


step2:修改路徑,改為"."


step3:再次回到CodeBlocks,視窗點選"Yes"讓程式重新跑

step4:成功修改檔案存取路徑


使用fscanf 讀檔案
程式碼:
#include <stdio.h>

int main(int argc, char** argv)  ///外掛 :printf、fprintf、fscanf、fopen
{
    FILE*fin =NULL;   ///讀檔
    fin = fopen("檔名.txt","r");   ///開啟檔案,Read


    char line[100];   ///宣告一個字串
    fscanf(fin,"%s",line);   ///讀入字串
    printf("現在讀到的是 %s \n",line);   ///印出字串
    
    ///Hello World為兩個字串,再寫一次
    fscanf(fin,"%s",line);
    printf("現在讀到的是 %s \n",line);
}



複習上週"Timer"參數(先不執行)
程式碼:
#include<stdio.h>
#include<windows.h>
#include<GL/glut.h>

///float angle[20]={};///都是0的陣列
float angle=0;

///上週程式
int diff=2;   ///宣告一個變數當"改變值"
void timer(int t) ///時間函式
{
    glutTimerFunc(30 ,timer ,t+1);
    angle+=diff;    ///改變值變化反應在旋轉角度上

    if(angle>90)  ///如果角度>90,轉回去
    {
        diff=-2;
    }
    if(angle<0)  ///如果角度<0,再轉回去
    {
        diff=+2;
    }
    glutPostRedisplay();  ///上週教"display();"
    ///差別: 不暴力 vs 暴力
}

void display( )
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glutSolidTeapot(0.3); ///身體
     glutSolidTeapot(0.3); ///左手臂,用T-R-T移動位置
     glutSolidTeapot(0.3); ///左手肘
     glutSolidTeapot(0.3); ///右手臂
     glutSolidTeapot(0.3); ///右手肘
     glutSwapBuffers( );
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week15-08160023");

    glutDisplayFunc(display);
    glutTimerFunc(0,timer,0);
    glutMainLoop( );
}


讓茶壺當作手臂"擺動"
程式碼:
#include<stdio.h>
#include<windows.h>
#include<GL/glut.h>

///float angle[20]={};///都是0的陣列
float angle=0;

///上週程式
int diff=2;   ///宣告一個變數當"改變值"
void timer(int t) ///時間函式
{
    glutTimerFunc(30 ,timer ,t+1);
    angle+=diff;    ///改變值變化反應在旋轉角度上

    if(angle>90)  ///如果角度>180,轉回去
    {
        diff=-2;
    }
    if(angle<0)  ///如果角度<0,再轉回去
    {
        diff=+2;
    }
    glutPostRedisplay(); ///上週教"display();"
    ///差別: 不暴力 vs 暴力
}

void display( )
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glPushMatrix();
        glutSolidTeapot(0.3);  ///身體

        glPushMatrix();    ///劃出左手臂
            glTranslatef(-0.3,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.3,0,0);
            glutSolidTeapot(0.3);  ///左手臂,用T-R-T移動位置

            glPushMatrix();   ///劃出左手肘
                glTranslatef(-0.3,0,0);
                glRotatef(angle,0,0,1);
                glTranslatef(-0.3,0,0);
                glutSolidTeapot(0.3);  ///左手肘,用T-R-T移動位置
            glPopMatrix();
        glPopMatrix();

        glPushMatrix();   ///劃出右手臂
                glTranslatef(0.3,0,0);
                glRotatef(angle,0,0,1);
                glTranslatef(0.3,0,0);
                glutSolidTeapot(0.3);  ///右手臂,用T-R-T移動位置

             glPushMatrix();  ///劃出右手肘
                glTranslatef(0.3,0,0);
                glRotatef(angle,0,0,1);
                glTranslatef(0.3,0,0);
                glutSolidTeapot(0.3);///右手肘,用T-R-T移動位置
            glPopMatrix();
        glPopMatrix();
     glPopMatrix();

     glutSwapBuffers( );

}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week15-08160023");

    glutDisplayFunc(display);
    glutTimerFunc(0,timer,0);
    glutMainLoop( );
}

沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...