C/C++圣誕樹

系列文章?

序號直達鏈接
1C/C++愛心代碼
2C/C++跳動的愛心
3C/C++李峋同款跳動的愛心代碼
4C/C++滿屏飄字表白代碼
5C/C++大雪紛飛代碼
6C/C++煙花代碼
7C/C++黑客帝國同款字母雨
8C/C++櫻花樹代碼
9C/C++奧特曼代碼
10C/C++精美圣誕樹
11C/C++俄羅斯方塊
12C/C++貪吃蛇
13C/C++孤單又燦爛的神-鬼怪
14C/C++閃爍的愛心
15C/C++哆啦A夢
16C/C++簡單圣誕樹
17C/C++小宇宙
18C/C++冰墩墩
19C/C++七彩花朵
20C/C++玫瑰花
21C/C++小豬佩奇
22C/C++簡易愛心
23C/C++流星雨
24C/C++2048小游戲
25C/C++愛心圣誕樹
26C/C++文字跑馬燈
27C/C++教師工作量管理系統

目錄

系列文章?

寫在前面

程序設計

代碼分析

寫在后面


寫在前面

C/C++語言繪制一棵精美的圣誕樹。

程序設計

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define PI 3.14159265359
#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
char love[20][43] = {
"                                          ",
"              1111       1111 111         ",
"  11111111111111111      111  111         ",
"  1111   11   111       111  111          ",
"    111 1111  1111       111  1111111111  ",
"    1111 111 111       1111 111      111  ",
" 1111111111111111111   1111 111     111   ",
" 111111111111111111   11111111  111 111   ",
" 111   111     111  1111111111  111       ",
"   1   111      11      111     111       ",
"   111111111111111      111  111111111    ",
"      111               111  1111111111   ",
"     111                111 111 111 111   ",
"   11111111111111       1111111 111  111  ",
"   1111111  1111        111111  111  1111 ",
"  111   1111111         11111   111   1   ",
" 111     1111           111     111       ",
"     11111111111111     111   11111       ",
"   111111     11111     111   1111        ",
"                                          "
};
void gotoxy(int x, int y) {HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos = { x,y };SetConsoleCursorPosition(hout, pos);
}
void SetColor(int color) {if (color == 0)color = 0x04;HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon, color);
}
……

代碼分析

這段代碼是用C語言編寫的控制臺程序,它使用了Windows API來創建一個帶有心形圖案和飄雪效果的動畫。以下是對代碼各個部分的詳細分析:

1. 包含頭文件

#include <stdio.h>#include <math.h>#include <stdlib.h>#include <windows.h>#include <time.h>
  • stdio.h:用于輸入輸出函數。

  • math.h:提供數學函數如sqrtfcosf等。

  • stdlib.h:提供如rand等標準庫函數。

  • windows.h:包含Windows API函數。

  • time.h:提供時間相關的函數。

2. 定義常量和宏

#define PI 3.14159265359#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
  • PI:圓周率。

  • T:這是一個宏,用來簡化后續代碼中坐標變換的表達式。

3. 心形圖案數組

char love[20][43] = { /* ... */ };

這是一個2D字符數組,定義了一個心形圖案,其中'1'表示需要打印的部分,空格表示不需要打印的地方。

4. 函數定義

gotoxy(int x, int y)

這個函數使用Windows API將光標移動到指定位置。

SetColor(int color)

設置控制臺文本的顏色。

showsnow()

在隨機位置顯示雪花('*')。

sdCircle(float px, float py, float r)

計算點(px, py)到圓心(sx, sy)的距離,并減去半徑r得到距離差值。

opUnion(float d1, float d2)

返回兩個距離中的最小值,用于構建幾何形狀。

ribbon()

判斷是否處于繪制帶狀區域的位置。

f(float px, float py, float theta, float scale, int n)

遞歸地生成復雜的圖形,可能是基于極坐標的心形或其他形狀。

5. 主函數main

主函數執行了以下操作:

  • 設置控制臺窗口大小為120列42行。

  • 獲取屏幕分辨率并居中控制臺窗口。

  • 初始化隨機數種子。

  • 設置控制臺的代碼頁以確保正確顯示字符。

  • 根據參數解析n和zoom變量,默認值分別為3和1.0。

  • 使用循環和遞歸調用f函數繪制心形圖案。

  • 使用love數組在特定位置繪制靜態的心形圖案。

  • 調用showsnow模擬下雪效果。

  • 等待用戶按鍵后退出。

總的來說,這段代碼是一個有趣的例子,展示了如何結合控制臺編程和圖形學概念來創建視覺上吸引人的效果。

寫在后面

我是一只有趣的兔子,感謝你的喜歡!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63678.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63678.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

lua dofile 傳參數

cat 1.lua arg[1] 111 arg[2] 222 dofile(./2.lua) cat 2.lua print("First argument is: " .. arg[1]) print("Second argument is: " .. arg[2]) 執行 lua 1.lua&#xff0c;結果為&#xff1a; First argument is: 111 Second argument is: 222 l…

電商數據流通的未來:API接口的智能化與自動化趨勢

在數字化時代&#xff0c;電子商務行業正在以前所未有的速度發展&#xff0c;而API&#xff08;應用程序編程接口&#xff09;接口作為電商領域的重要組成部分&#xff0c;其應用和發展趨勢也日益受到關注。API接口作為電商系統與外部服務或平臺交互的橋梁&#xff0c;對電商數…

投標心態:如何在“標海戰術”中保持清醒的頭腦?

在競爭激烈的市場環境下&#xff0c;“標海戰術”——即大規模參與投標——已經成為許多企業爭取市場份額的重要策略。然而&#xff0c;盲目追求投標數量可能導致資源浪費、團隊疲勞以及戰略目標的模糊化。在這種高強度的競爭模式中&#xff0c;如何保持清醒的頭腦&#xff0c;…

【蒼穹外賣】學習心得體會-隨筆

前言 寫了很久&#xff0c;終于可以完整運行項目了&#xff0c;記錄下這幾天的心得體會回顧一下知識點 第一天、Git 分布式版本控制工具 一、Git概述 定義&#xff1a;是分布式版本控制工具&#xff0c;用于管理軟件開發中的源代碼文件&#xff0c;像Java類、xml文件、html…

windows C#-使用構造函數

實例化類或結構時&#xff0c;將會調用其構造函數。 構造函數與該類或結構具有相同名稱&#xff0c;并且通常初始化新對象的數據成員。 在下面的示例中&#xff0c;通過使用簡單構造函數定義了一個名為 Taxi 的類。 然后使用 new 運算符對該類進行實例化。 在為新對象分配內存…

研發效能DevOps: Vite 使用 Element Plus

目錄 一、實驗 1.環境 2.初始化前端項目 3.安裝 vue-route 4.安裝 pinia 5.安裝 axios 6.安裝 Element Plus 7.gitee創建工程 8. 配置路由映射 9.Vite 使用 Element Plus 二、問題 1.README.md 文檔推送到gitee未自動換行 2.訪問login頁面顯示空白 3.表單輸入賬戶…

5G 模組 RG500Q常用AT命令

5G 模組 RG500Q常用AT命令 5G 模組 RG500Q常用AT命令 at ATQNWPREFCFG\"mode_pref\",nr5g && sleep 1 at ATQNWPREFCFG\"nr5g_band\",79 && sleep 1 at atqnwlock\"commo…

NVIDIA DeepStream插件之Gst-nvtracker

NVIDIA DeepStream插件之Gst-nvtracker 1. 源由2. 基礎知識3. Gst-nvtracker插件3.1 插件參數3.2 插件API接口 4. 分析問題5. 總結6. 參考資料 1. 源由 這篇的主要目的是稍微吐槽下NVIDIA的設計&#xff0c;當然其實他們做的還是不錯的&#xff08;從系統架構設計角度看&#…

進程內存轉儲工具|內存鏡像提取-取證工具

1.內存轉儲&#xff0c;內存轉儲&#xff08;Memory Dump&#xff09;是將計算機的物理內存&#xff08;RAM&#xff09;內容復制到一個文件中的過程&#xff0c;這個文件通常被稱為“內存轉儲文件”或“核心轉儲文件”&#xff08;Core Dump&#xff09;,內存轉儲的主要目的是…

Lua語言入門 - Lua 面向對象

Lua 面向對象 面向對象編程&#xff08;Object Oriented Programming&#xff0c;OOP&#xff09;是一種非常流行的計算機編程架構&#xff0c;通過創建和操作對象來設計應用程序。 以下幾種編程語言都支持面向對象編程&#xff1a; CJavaObjective-CSmalltalkC#Ruby Lua 是…

Pyqt6在lineEdit中輸入文件名稱并創建或刪除JSON文件

1、創建JSON文件 代碼 import osdef addModulekeyWordFile(self):if "" ! self.lineEdit_module.text():moduleFile self.lineEdit_module.text() .jsonelse:self.toolLogPrinting(請輸入模塊名稱)returnfilePath modulekeyWordFileDir moduleFileif os.path.e…

【Leetcode 熱題 100】236. 二叉樹的最近公共祖先

問題背景 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 最近公共祖先的定義為&#xff1a;對于有根樹 T T T 的兩個節點 p p p、 q q q&#xff0c;最近公共祖先表示為一個節點 x x x&#xff0c;滿足 x x x 是 p p p、 q q q 的祖先且 x x x 的深度盡可能大…

數據結構--堆的向上調整和向下調整

文章目錄 1.完全二叉樹2.堆向上調整3.堆向下調整4.測試代碼 1.完全二叉樹 下面的這個就是對于我們的完全二叉樹的這個邏輯結構和物理結構的說明&#xff1a; 邏輯結構就是我們自己認為的進行購想出來的&#xff1b; 但是這個物理結構卻是我們的這個數據結構在內存里面的真是…

智能掛號系統設計典范:SSM 結合 Vue 在醫院的應用實現

摘要 隨著信息技術在管理上越來越深入而廣泛的應用&#xff0c;管理信息系統的實施在技術上已逐步成熟。本文介紹了醫院預約掛號系統的開發全過程。通過分析醫院預約掛號系統管理的不足&#xff0c;創建了一個計算機管理醫院預約掛號系統的方案。文章介紹了醫院預約掛號系統的系…

“魔法糖果盒的秘密:用樸素貝葉斯算法猜糖果顏色”

想象一下&#xff0c;你有一個神奇的糖果盒&#xff0c;這個糖果盒里有兩種糖果&#xff1a;紅色的和藍色的。你閉上眼睛&#xff0c;從盒子里拿出一個糖果&#xff0c;然后嘗一嘗&#xff0c;你想知道這個糖果是紅色的還是藍色的。樸素貝葉斯算法就像是一個魔法規則&#xff0…

Transform組件的用法

文章目錄 1. 概念介紹2. 使用方法3. 示例代碼我們在上一章回中介紹了Checkbox Widget相關的內容,本章回中將介紹Transform Widget.閑話休提,讓我們一起Talk Flutter吧。 1. 概念介紹 我們在這里說的Transform是一種容器類widget,它和Container組件類似。它可以包含其它的組件…

go面試問題

1 Go的內存逃逸如何分析 go build -gcflags-m main_pointer.go 2 http狀態碼 300 請求的資源可包括多個位置&#xff0c;相應可返回一個資源特征與地址的列表用于用戶終端&#xff08;例如&#xff1a;瀏覽器&#xff09;選擇 301 永久移動。請求的資源已被永久的移動到新U…

康冠科技嵌入式面試題及參考答案

LCD 驅動你自己做了哪些內容? 在 LCD 驅動開發中,首先是硬件層面的理解。需要仔細研究 LCD 的數據手冊,明確其引腳定義,包括電源引腳、數據引腳、控制引腳等。比如,對于常見的 RGB 接口 LCD,要清楚哪幾個引腳是用于傳輸紅、綠、藍三種顏色的數據,以及像 VSYNC(垂直同步…

TouchGFX移植(5)增加觸屏驅動

一&#xff09;增加驅動代碼gt9xxx.c和ctiic.c到工程中的BSP目錄下: 二&#xff09;更改觸摸文件STM32TouchController.cpp 1&#xff09;在STM32TouchController.cpp文件中增加&#xff1a; #include “gt9xxx.h” 2&#xff09;增加gt9xxx_init(); void STM32TouchControlle…

初識面向對象晨考day09

1.類和對象什么關系 類是對象的抽象 對象是類的具體 2.什么是屬性和方法 一類事物共有的特征&#xff0c;使用屬性描述 一類事物共有的行為&#xff0c;使用方法描述 3.普通方法的定義格式 public 返回值類型 方法名(參數列表){} 4.什么是形參&#xff0c;什么是實參 形參是方法…