C語言控制檯列印3D愛心圖案
本文由碼農網 – 小峰原創,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
很多程式設計師都覺得自己的程式設計工作十分的鼓譟乏味,一整天面對的都是一些寫不完的程式碼和改不完的Bug。今天我們要給大家分享一些有趣的C語言程式碼,或許可以為你無聊的工作帶來一絲樂趣。這些程式碼可以完成幾個不同的愛心圖案,其中有一個例子甚至可以在黑色背景的控制檯上列印出跳動的3D愛心動畫,效果相當震撼。
我用的是Visual Studio 2015開發環境,如果你也使用這個開發環境,可以直接拷貝下面的程式碼進行效果演示。
普通的愛心圖案
C語言程式碼:
#include "stdafx.h" #include <math.h> #include <stdio.h> int main() { float y, x, a; for (y = 1.5f;y > -1.5f;y -= 0.1f) { for (x = -1.5f;x < 1.5f;x += 0.05f) { a = x*x + y*y - 1; putchar(a*a*a - x*x*y*y*y <= 0.0f ? '*' : ' '); } putchar('\n'); } return 0; }
效果圖:
帶花紋的愛心圖案
C語言程式碼:
#include "stdafx.h" #include <math.h> #include <stdio.h> int main() { float y, x, z,f; for (y = 1.5f;y > -1.5f;y -= 0.1f) { for (x = -1.5f;x < 1.5f;x += 0.05f) { z = x*x + y*y - 1; f = z*z*z - x*x*y*y*y; putchar(f <= 0.0f ? ".:-=+*#%@"[(int)(f*-8.0f)] : ' '); } putchar('\n'); } getchar(); return 0; }
效果圖:
跳動的3D愛心圖案
C語言程式碼:
#include "stdafx.h" #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> float f(float x, float y, float z) { float a = x * x + 9.0f / 4.0f * y * y + z * z - 1; return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z; } float h(float x, float z) { for (float y = 1.0f; y >= 0.0f; y -= 0.001f) if (f(x, y, z) <= 0.0f) return y; return 0.0f; } int main() { HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE); _TCHAR buffer[25][80] = { _T(' ') }; _TCHAR ramp[] = _T(".:-=+*#%@"); for (float t = 0.0f;; t += 0.1f) { int sy = 0; float s = sinf(t); float a = s * s * s * s * 0.2f; for (float z = 1.3f; z > -1.2f; z -= 0.1f) { _TCHAR* p = &buffer[sy++][0]; float tz = z * (1.2f - a); for (float x = -1.5f; x < 1.5f; x += 0.05f) { float tx = x * (1.2f + a); float v = f(tx, 0.0f, tz); if (v <= 0.0f) { float y0 = h(tx, tz); float ny = 0.01f; float nx = h(tx + ny, tz) - y0; float nz = h(tx, tz + ny) - y0; float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz); float d = (nx + ny - nz) * nd * 0.5f + 0.5f; *p++ = ramp[(int)(d * 5.0f)]; } else *p++ = ' '; } } for (sy = 0; sy < 25; sy++) { COORD coord = { 0, sy }; SetConsoleCursorPosition(o, coord); WriteConsole(o, buffer[sy], 79, NULL, 0); } Sleep(33); } }
效果圖
跳動的愛心動畫需要你執行程式後才可以看到。
你還有更有趣的方案嗎?歡迎告訴我們!
本文連結:http://www.codeceo.com/article/c-3d-heart.html
本文作者:碼農網 – 小峰
[ 原創作品,轉載必須在正文中標註並保留原文連結和作者等資訊。]
相關文章
- C語言列印年曆C語言
- C語言列印“Hello World“C語言
- flowable 控制檯列印出自帶表的 sql 語句SQL
- 彙編+qemu玩轉控制檯列印
- Go 語言控制檯輸入&生成隨機數Go隨機
- C語言 截圖C語言
- Unity控制檯console列印富文字Unity
- C語言進位制轉換與列印C語言
- 以太坊Solidity程式語言開發框架————9、控制檯Solid框架
- C語言實驗——for迴圈列印圖形(迴圈結構)(sdut oj)C語言
- 二進位制列印與逆序_C語言(轉)C語言
- C++ 控制檯讀寫excelC++Excel
- C語言檔案操作C語言
- C語言(檔案操作)C語言
- 動態獲取tomcat啟動埠,控制檯列印專案訪問地址Tomcat
- Golang(Go語言)封裝一個簡單的控制檯輸出包Golang封裝
- (C語言)使用指標列印陣列的內容C語言指標陣列
- 不一樣的控制檯程式—–在控制檯中輸出圖片薦
- [C#] 在控制檯繪圖, 如:放置影像, 繪製線條C#繪圖
- C語言(檔案加解密)C語言解密
- C語言-檔案讀寫C語言
- C語言系統資源控制(getrlimit && setrlimit)C語言MIT
- C\C++控制檯程式隱藏方法總結C++
- Spring Boot使用AOP在控制檯列印請求、響應資訊Spring Boot
- Rust中獲得CPU核數與列印日誌到控制檯?Rust
- 控制檯列印類sqlmap啟動場景?Figlet藝術字SQL
- C語言/C++讀取檔案資訊C語言C++
- C語言 C語言野指標C語言指標
- C語言---“C語言 誰與爭鋒?”C語言
- C語言練手專案--C 語言製作簡單計算器C語言
- C 語言畫圖之畫個太極圖
- 用c語言處理檔案C語言
- C語言 檔案IO的使用C語言
- c語言多檔案編譯C語言編譯
- c語言檔案操作相關C語言
- c語言拷貝檔案程式C語言
- C語言實現檔案加密C語言加密
- C語言 - 標頭檔案包含C語言