C/C++哆啦A夢

image-20250831103854765

寫在前面

用代碼繪制童年記憶中的那個藍胖子——哆啦A夢,是我對經典角色的一次深情致敬。這段程序不僅是一幅靜態圖像的生成,更是一次對童年幻想世界的數字重建。通過精確的幾何控制與色彩搭配,我將那個圓潤可愛、溫暖可靠的機器人重新帶回眼前,哪怕只是以像素的形式靜靜佇立在屏幕上,也足以喚起心底最柔軟的回憶。

系列文章

序號直達鏈接
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++哆啦A夢
15C/C++簡單圣誕樹
16C/C++小宇宙
17C/C++冰墩墩
18C/C++七彩花朵
19C/C++玫瑰花
20C/C++小豬佩奇
21C/C++簡易愛心
22C/C++流星雨①
23C/C++2048小游戲
24C/C++愛心圣誕樹
25C/C++文字跑馬燈
26C/C++教師工作量管理系統
27C/C++滿天繁星
28C/C++漂浮愛心
29C/C++五子棋小游戲
30C/C++球球大作戰小游戲
31C/C++走迷宮小游戲
32C/C++粉色愛心
33C/C++棕色小熊
34C/C++粉色動態愛心
35C/C++炫酷煙花①
36C/C++炫酷煙花②
37C/C++炫酷煙花③
38C/C++炫酷煙花④
39C/C++星空漩渦
40C/C++流星雨②
敬請期待……

技術需求

  1. 圖形環境初始化
  • 使用initgraph創建800×600的繪圖窗口,提供足夠的繪制空間與視覺舒適度。
  • 調用setorigin將坐標原點移至屏幕中心,便于以對稱方式構建角色,符合哆啦A夢高度對稱的外觀特征。
  • 設置白色背景并通過cleardevice清除畫面,確保繪圖起點干凈整潔。
  1. 顏色與填充管理
  • 采用RGB函數自定義顏色值,精準還原哆啦A夢標志性的天藍色身體(RGB: 7, 190, 234)與鈴鐺的金黃色(RGB: 245, 237, 38),增強視覺還原度。
  • 使用setfillcolorsetlinecolor分別控制填充與輪廓顏色,實現清晰的圖形邊界與內部填充效果。
  1. 幾何圖形繪制能力
  • 利用fillroundrect繪制圓角矩形,用于眼睛、口袋和鈴鐺繩等細節部位,體現柔和的卡通風格。
  • 通過fillellipsefillcircle繪制臉部、眼球、肚皮和鈴鐺,確保曲線平滑自然。
  • 使用arc繪制嘴巴的弧形輪廓,結合角度參數精確控制起始與終止位置,還原經典微笑表情。
  1. 路徑與線條控制
  • line函數用于繪制胡須、手臂、腿部連接線及鈴鐺下方的懸掛線條,線條粗細可通過setlinestyle調節,增強細節表現力。
  • 手部與腳部采用圓形與圓角矩形組合,模擬手套與短靴的卡通造型。
  1. 區域填充技術
  • 使用floodfill進行身體主色的大面積填充,從指定點出發自動填充至邊界,適用于復雜閉合區域,提升繪制效率。
  • 通過白色矩形覆蓋多余部分,巧妙“擦除”超出肚皮范圍的填充色,實現精準視覺裁剪。
  1. 結構化與順序繪制邏輯
  • 按照“臉→身體→鈴鐺”的順序分層繪制,符合人類視覺認知習慣,也便于調試與修改。
  • 每個部件獨立繪制,結構清晰,便于后期擴展(如添加動畫或交互)。

主要代碼

#include <graphics.h>
#include <conio.h>const double PI = 3.1415926536;
// 畫哆啦A夢
// 主函數
int main()
{// 創建大小為 800 * 600 的繪圖窗口initgraph(800, 600);// 設置原點 (0, 0) 為屏幕中央(Y軸默認向下為正)setorigin(400, 300);// 使用白色填充背景setbkcolor(WHITE);cleardevice();……

創作流程

我決定畫哆啦A夢的那一刻,腦海里浮現的是小時候守在電視機前等他從四次元口袋掏出神奇道具的畫面。那個圓滾滾的藍色身影,不只是一個動畫角色,更像是陪伴我成長的朋友。于是,我想用代碼重新創造他,不是為了炫技,而是想把那份溫暖用另一種語言表達出來。

一開始,我并沒有急于下筆寫代碼,而是先在紙上畫了他的草圖,分析他的結構:頭部是近乎圓形的輪廓,眼睛對稱分布,鼻子小巧紅潤,嘴巴彎成標志性的弧線。身體部分則更簡潔,一個大肚子配上短短的手腳,胸前掛著那個閃閃發光的鈴鐺。我把這些拆解成一個個幾何模塊——圓、橢圓、圓角矩形、弧線,思考如何用圖形函數去逼近這些形狀。

接下來是坐標的規劃。我把整個屏幕的中心設為原點,這樣左右對稱的部分就能用正負坐標輕松實現。比如兩只眼睛,只需要一個向左一個向右復制相同的結構;胡須也是一樣,六條對稱的斜線,方向相反但邏輯一致。這種對稱性讓代碼變得簡潔,也更接近哆啦A夢原本的設計美學。

顏色的選擇我格外用心。他的藍色不能太深也不能太淺,我反復調試RGB值,直到找到最接近原作的那種明亮而溫暖的天藍。鈴鐺的金黃要帶一點暖意,像陽光照在金屬上的反光,所以我選了偏奶油黃的色調。而胡須的細線則用純黑,突出那種俏皮的細節感。

最難的是嘴巴的弧度。它不是簡單的半圓,而是一個略帶傾斜的微笑弧線,從左下到右上緩緩上揚。我用了arc函數,通過調整起始和終止角度,反復預覽,終于找到了那個恰到好處的弧度——就像他每次笑著說“別擔心,我有道具”時的表情。

身體的繪制更考驗整體協調。我先畫出手臂和腿的連接線,確定比例關系,再填充肚皮的白色圓形。但問題來了:肚皮和身體的藍色交界處容易重疊混亂。于是我想了個辦法,先用floodfill大面積填充藍色,再用白色圓形精準覆蓋肚子區域,最后用一個小矩形“擦掉”多余部分,讓白色肚皮干凈利落地呈現出來。

鈴鐺是點睛之筆。我特意加了三條橫線作為裝飾紋路,還畫了一條細細的懸掛線,讓它看起來真的掛在胸前。每一個細節都在告訴我:這不是冷冰冰的代碼,而是一次情感的投射。

當我運行程序,看到那個熟悉的藍胖子完整出現在屏幕上時,心里涌起一種難以言喻的滿足。他沒有動,也沒有說話,但我知道,他回來了。

寫在后面

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

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

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

相關文章

CSS入門指南:30字掌握核心技巧

1. CSS初體驗 1.1. CSS定義 層疊樣式表 (Cascading Style Sheets&#xff0c;縮寫為 CSS&#xff09; 用來描述 HTML 文檔的呈現&#xff08;美化內容&#xff09; 1.2. CSS引入方式 內部樣式表&#xff1a;學習使用 CSS 代碼寫在head里面的 style標簽 里面 外部樣式表&…

從實操到原理:一文搞懂 Docker、Tomcat 與 k8s 的關系(附踩坑指南 + 段子解疑)

目錄 一、先分清&#xff1a;Docker、Tomcat、k8s 到底是 “干啥的”&#xff1f; 二、它們的 “合作關系”&#xff1a;從 Java 項目到集群部署的全流程 三、實際應用場景&#xff1a;什么時候該用誰&#xff1f; 1. 單獨使用場景 2. 組合使用場景&#xff08;最常見&…

測試覆蓋率不夠高?這些技巧讓你的FastAPI測試無懈可擊!

url: /posts/0577d0e24f48b3153b510e74d3d1a822/ title: 測試覆蓋率不夠高?這些技巧讓你的FastAPI測試無懈可擊! date: 2025-09-02T01:49:10+08:00 lastmod: 2025-09-02T01:49:10+08:00 author: cmdragon summary: FastAPI通過TestClient工具支持單元測試,模擬HTTP請求直接…

Qwen3-Reranker-0.6B 模型結構

模型加載 import torch from modelscope import AutoModel, AutoTokenizer, AutoModelForCausalLMtokenizer AutoTokenizer.from_pretrained("Qwen/Qwen3-Reranker-0.6B", padding_sideleft) model AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-Reranke…

無參 MOS 算法的評估方式

一、無參 MOS 算法 在音頻處理和質量評估領域&#xff0c;MOS&#xff08;Mean Opinion Score&#xff09;是一種常用的主觀評價指標&#xff0c;用于衡量音頻質量。然而&#xff0c;獲取主觀 MOS 評分通常需要大量的人力和時間。因此&#xff0c;無參 MOS 算法應運而生&#…

Flowable——配置使用Flowable-UI

文章目錄 前言 框架選型與版本 flowable-ui 搭建 依賴引入 springboot 主要版本 flowable 相關 log4j 日志配置項 配置文件 log4j配置文件 application.yml 增加啟動類并啟動程序 項目整體結構 前言 最近對工作流的flowable比較感興趣,匯總記錄一下相關的研究學習知識點。 框…

2025大學生必考互聯網行業證書排名?

在互聯網行業蓬勃發展的當下&#xff0c;大學生若想畢業后順利投身其中&#xff0c;提前考取相關高含金量證書不失為明智之舉。這些證書不僅能證明專業能力&#xff0c;還能在求職時為你增添競爭優勢。接下來&#xff0c;為大家詳細介紹 2025 年大學生必考的互聯網行業證書排名…

【并發系列-01】高并發系統架構設計原理

【并發系列-01】高并發系統架構設計原理 1. 業務場景&#xff1a;當雙11遇上技術挑戰 1.1 問題場景描述 想象一下這樣的場景&#xff1a;某電商平臺在雙11期間&#xff0c;短短30分鐘內涌入了500萬用戶&#xff0c;同時發起了超過2000萬次商品查詢請求和100萬次下單操作。而平時…

【Vue2 ?】Vue2 入門之旅(八):過渡與動畫

前幾篇我們學習了事件處理。本篇將介紹 過渡與動畫&#xff0c;讓 Vue 頁面更加生動。 目錄 transition 組件進入與離開過渡過渡類名結合 CSS 動畫JavaScript 鉤子小結 transition 組件 Vue 提供了內置組件 <transition>&#xff0c;可以為元素或組件的進入和離開添加動…

【LeetCode】力扣刷題攻略路線推薦!適合新手小白入門~(含各類題目序號)

力扣上有許多數據結構及算法的練習&#xff0c;但是如果由第一題【兩數之和】開始刷&#xff0c;會讓50%的人倒在起點。所以我們刷題要講究路線攻略以及技巧~大體路線方向由簡入難數學數組鏈表字符串哈希表雙指針遞歸棧隊列樹圖與回溯算法貪心動態規劃刷題技巧 建議刷題的時候分…

Windows 電腦發現老是自動訪問外網的域名排障步驟

Windows 電腦發現老是自動訪問外網的域名,如何排障 一、基礎信息獲取與進程定位 1.1、確認進程關鍵信息 1.2、進程合法性初步驗證 二、網絡連接深度分析 2.1、目的IP/域名溯源 2.2、端口與協議檢查 三、進程行為與系統異常排查 3.1、進程啟動與依賴分析 3.2、系統異常行為掃描…

curl、python-requests、postman和jmeter的對應關系

一、初識curlcurl 是一個功能強大的命令行工具&#xff0c;用于傳輸數據&#xff0c;支持多種協議&#xff08;如 HTTP、HTTPS、FTP 等&#xff09;。分析以下curl&#xff1a;curl "https://$HOST/mon/adm/au/opera" --header "Authorization: $AUTH" -X …

【MySQL】初識數據庫基礎

【MySQL】初識數據庫基礎 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;MySQL筆記 文章目錄【MySQL】初識數據庫基礎前言一. 數據庫基礎&#xff08;重點&#xff09;1.1 什么是數據庫1.2 主流數據庫1.3 基本使用1.3.1 MySQL安裝1.3.2 連接…

微服務Docker-compose之若依部署

目錄 1.創建一個文件夾 2.上傳壓縮包 3.解壓 4.執行ry1文件 5.執行ry2文件 6.進入nginx的html目錄解壓dist文件 7.執行ry3文件 8.訪問nacos 9.訪問若依 1.創建一個文件夾 2.上傳壓縮包 3.解壓 4.執行ry1文件 5.執行ry2文件 6.進入nginx的html目錄解壓dist文件 7.執行ry…

《中國棒球》健將級運動員什么水平·棒球1號位

棒球國家健將級の神級科普&#xff5c;國內TOP1%??國際能打嗎&#xff1f;1. 什么是"國家健將級"&#xff1f;&#xff5c;What is "Master Sportsman"&#xff1f;中國運動員等級天花板&#xff1a;僅次"國際健將"的最高國家級榮譽&#xff0…

NAT與內網穿透

目錄 一、為什么需要NAT&#xff1f; 二、NAT的核心&#xff1a;從“一對一”到“多對一” &#xff08;1&#xff09;靜態NAT &#xff08;2&#xff09;動態NAT &#xff08;3&#xff09;NAPT 三、NAPT的雙刃劍&#xff1a;安全與局 四、內網穿透 &#xff08;1&…

力扣222 代碼隨想錄Day15 第四題

完全二叉樹結點的數量class Solution { public:int countNodes(TreeNode* root) {if(rootNULL) return 0;TreeNode* leroot->left;TreeNode* riroot->right;int ld0;int rd0;while(le){lele->left;ld;}while(ri){riri->right;rd;}if(ldrd) return(2<<ld)-1;i…

Node.js異步編程:Callback/Promise/Async

Node.js異步編程&#xff1a;Callback/Promise/Async引言Node.js以其非阻塞I/O和事件驅動架構而聞名&#xff0c;這使得異步編程成為Node.js開發中的核心概念。在Node.js中&#xff0c;處理異步操作經歷了從Callback到Promise再到Async/Await的演進過程。本文將探討這三種異步編…

野火STM32Modbus主機讀取寄存器/線圈失敗(一)-解決接收中斷不觸發的問題

接收中斷不觸發 前情提要 在自己的開發板上移植了野火的modbus主機程序。 野火主機程序移植 野火主機代碼理解與使用 問題背景 我使用STM32顯示板作為Modbus主機連接電腦&#xff0c;并在電腦上運行Modbus Slave軟件。測試中發現&#xff0c;讀取保持寄存器和輸入寄存器均失…

5種常見的網絡安全漏洞及防護建議

五種常見的網絡安全漏洞及防護建議在數字化時代&#xff0c;網絡安全已成為個人和企業面臨的重要挑戰。網絡攻擊手段不斷升級&#xff0c;黑客利用各種漏洞入侵系統、竊取數據或破壞服務。了解常見的網絡安全漏洞并采取相應的防護措施&#xff0c;是保障信息安全的關鍵。本文將…