如何用C語言畫出69歲的老同志?年輕人不講武德!

2021-10-20 04:23:18 字數 3773 閱讀 2704

具體實現

**實現

最終效果:

馬老師經典名言:年輕人不講武德,我勸你耗子尾汁!

這是乙個非常有意思的水部落格,年輕人不講武德。先看看效果:

所以,我們c語言輸出的馬老師也是一樣的道理,只不過快速切換的不是幀,而是由字元構成的字元幀:

然後我們開啟ascgen2,按ctrl+b,開啟批量轉換:

將幀的目錄加入進來,然後自己設定一下轉換後字元矩陣的大小,字元幀就完成了:

資源準備好了,開始動手寫**。

字元幀最後是用的字元陣列存的,這樣編譯後就形成了乙個exe整體,不需要再讀取外部資料了,所以我把字元幀放進了乙個 rescore.h 標頭檔案裡。

不過我們現在得到了字元文字,它們是很多個檔案,我們怎麼把它合併成乙個標頭檔案?手動複製?累死!

首先我們在字元文字目錄下新建乙個 cmd.dat 檔案,內容如下:

然後我們雙擊cmd.dat,隨後我們就得到了乙個 path.txt檔案,這個檔案儲存了當前資料夾下,所有檔案的名字 ,也就是 所有字元幀檔案的名字 :

**目錄結構:

其中 rescore.h 標頭檔案是creatrescore.cpp生成出來的。

字元幀 和 path.txt檔案都在 ==rescore \ txt == 目錄下。

main.exe是我們最後生成的效果。

#include

#include

#include

#include

#pragma comment(lib, "winmm.lib")

#define fps 10.92

#define txt_path "rescore\\txt\\"

#define file_name "path.txt"

#define count (1818)

//一共有多少幀

#define size 115584

//一幀的大小(b)

void

gotoxy

(short i,

short j)

;setconsolecursorposition

(getstdhandle

(std_output_handle)

, position)

; console_cursor_info cursor_info =

;setconsolecursorinfo

(getstdhandle

(std_output_handle)

,&cursor_info);}

bool

iserror

(file *fptr)

void

fun(

)//寫入標頭檔案的預處理部分

fprintf

(rescore,

"#define size (%d)\n"

, size)

;fprintf

(rescore,

"#define count (%d)\n"

, count)

;fprintf

(rescore,

"#define fps %lf\n"

, fps)

;fputs

("char rescore[count][size+1]

//將字元幀寫入標頭檔案

fputs("

printf

("一幀的大小:%d\n"

,c);

fseek

(rescore,-1

,seek_cur);

fputs

("},\n"

, rescore)

;fclose

(fptr);}

fseek

(rescore,-1

,seek_end),

fputs

("};"

, rescore)

;fclose

(rescore)

;//關閉標頭檔案

fclose

(pptr)

;//關閉路徑檔案

getchar()

;}intmain

(void

)

#include

#include

#include

"rescore.h"

void

gotoxy

(short i,

short j)

;setconsolecursorposition

(getstdhandle

(std_output_handle)

, position)

; console_cursor_info cursor_info =

;setconsolecursorinfo

(getstdhandle

(std_output_handle)

,&cursor_info);}

void

init

(int width,

int height)

;//定義乙個座標結構體

getconsolescreenbufferinfo

(handle_out,

&scbi)

;//獲得視窗緩衝區資訊

setconsolescreenbuffersize

(handle_out, size)

;// 重新設定緩衝區大小

}int

main

(void

)getchar()

;}

我們先編譯執行 creatrecsore.cpp ,得到 rescore.h 標頭檔案。

然後編譯執行 main.cpp ,就得到了我們 最終的程式main.exe 。

最後因為字元比較多,編譯出來的exe有200多兆。。。

我這裡一幀是由 115584個ascll碼 組成,一共1818幀,算一下那就是:

115584b * 1818 = 210131712b = 205206.75kb = 200.4mb.

如何用C語言獲取檔案的大小

今天看專案的 過程中發現在linux下獲取乙個指定檔案大小 位元組為單位 的 查了一下發現是使用系統呼叫stat來實現,而這引起了我的興趣,我發現在window下貌似沒有提供這樣的系統呼叫 不包括mfc 那麼如何使用c語言或c 語言來寫乙個通用的函式來獲取指定檔案大小的函式呢?查了一下發現同c語言的...

如何用C語言獲取檔案的大小

今天看專案的 過程中發現在linux下獲取乙個指定檔案大小 位元組為單位 的 查了一下發現是使用系統呼叫stat來實現,而這引起了我的興趣,我發現在window下貌似沒有提供這樣的系統呼叫 不包括mfc 那麼如何使用c語言或c 語言來寫乙個通用的函式來獲取指定檔案大小的函式呢?查了一下發現同c語言的...

如何用C語言獲取檔案的大小

在linux下獲取乙個指定檔案大小 位元組為單位 的 查了一下發現是使用系統呼叫stat來實現,那麼如何使用c語言或c 語言來寫乙個通用的函式來獲取指定檔案大小的函式呢?查了一下發現同c語言的檔案操作函式便可以很容易的實現這樣的功能。在自己實現的函式中使用到的函式就只有fseek和ftell。它們的...