日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

用C++写一个星空

發(fā)布時(shí)間:2024/7/23 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用C++写一个星空 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,這是我學(xué)完C++后,完整的編寫的一個(gè)程序之一,有興趣的可嘗試編寫,畫面(動(dòng)態(tài)的)還可以。

本程序總結(jié)有兩個(gè)版本,分別是對(duì)C++中的繼承、多態(tài)等一些方面的練習(xí)。

編寫用的是VS2019,easyx。

首先,來(lái)寫第一個(gè)版本,也是最基礎(chǔ)的版本,后續(xù)的都是在這個(gè)上進(jìn)行一些細(xì)節(jié)的優(yōu)化。有更好想法的小伙伴歡迎來(lái)一起討論。

#include<iostream> #include<graphics.h> #include<time.h> #include<coino.h> #define SCREEN_WIDTH 1024 #define SCREEN_HEIGHT 840 using namespace std; //創(chuàng)建一個(gè)星星類管理數(shù)據(jù) class star {public:star(){}void Init();void move();~star(){} private:double m_x=0;int m_y;int m_color;double m_step; }; void star::Init() //對(duì)星星的初始化 {if (m_x == 0){m_x = rand() % SCREEN_WIDTH;}else{m_x = 0;}m_y = rand() % SCREEN_HEIGHT;m_step = (rand() % 5000) / 1000.0 + 1;m_color = (int)(m_step * 255 / 6.0 + 0.5);m_color = RGB(m_color, m_color, m_color);} void star::move() //星星的移動(dòng) {putpixel((int)m_x, m_y, 0);m_x += m_step;if (m_x > SCREEN_WIDTH){this->Init(); \}putpixel((int)m_x, m_y, m_color); }int main() {srand((unsigned)time(NULL));initgraph(SCREEN_WIDTH, SCREEN_HEIGHT);star star[MAXSTAR];for (int i = 0; i < MAXSTAR; i++){star[i].Init();}while (!_kbhit()){for (int i = 0; i < MAXSTAR; i++){star[i].move();}Sleep(30);}closegraph();return 0;}

有編譯環(huán)境的可以上機(jī)跑一下,代碼不是很難。

?

接下來(lái)這個(gè)版本是升級(jí)版,對(duì)一些代碼進(jìn)行了優(yōu)化,從上述代碼中不難看出對(duì)星星的“畫”、“檫”、“新的位置”這三個(gè)用得較多,不如將這三個(gè)單獨(dú)用個(gè)函數(shù)寫出,后面直接調(diào)用即可。

代碼優(yōu)化如下:

#include<iostream> #include<graphics.h> #include<windows.h> #include<time.h> #include<conio.h> #define SCREEN_WIDTH 1024 #define SCREEN_HEIGHT 840 #define MAXSTAR 400 using namespace std; class Star { public:Star() {}~Star() {}void Init();void Move();public:void Draw();void NewPos();void Remove();double m_x = 0;int m_y;double m_step;int m_color;}; class RectStar : public Star { public:RectStar() {}~RectStar() {}void Move(){Remove();NewPos();Draw();}protected:void Draw();void Remove(); }; void Star::Init() {if (m_x == 0){m_x = rand() % SCREEN_WIDTH;}else{m_x = 0;}m_y = rand() % SCREEN_HEIGHT;m_step = (rand() % 5000) / 1000.0 + 1;m_color = (int)(m_step * 255 / 6.0 + 0.5); // 速度越快,顏色越亮m_color = RGB(m_color, m_color, m_color);}void Star::Move() {Remove();NewPos();Draw();}/*void Star::Draw() {putpixel((int)m_x, m_y, m_color); }*/void Star::NewPos() {m_x += m_step;if (m_x > SCREEN_WIDTH)this->Init(); } void Star::Draw() {putpixel((int)m_x, m_y, m_color);setcolor(m_color);circle(m_x, m_y, 1); }void Star::Remove() {putpixel((int)m_x, m_y, 0);setcolor(0);circle(m_x, m_y, 1); } /*void Star::Remove() {putpixel((int)m_x, m_y, 0); }*/ int main() {srand((unsigned)time(NULL));initgraph(SCREEN_WIDTH, SCREEN_HEIGHT);Star star[MAXSTAR];RectStar rstar[MAXSTAR];for (int i = 0; i < MAXSTAR; i++){star[i].Init();rstar[i].Init();}while (!_kbhit()){for (int i = 0; i < MAXSTAR; i++){star[i].Move();rstar[i].Move();}Sleep(50);}closegraph();return 0;}

是不是在運(yùn)行后覺得一兩種星的形狀太枯燥了,接下來(lái)簡(jiǎn)單的用多態(tài)來(lái)實(shí)現(xiàn)不同的星星的形狀

代碼如下:

#include<iostream> #include<graphics.h> #include<time.h> #include<conio.h> #define SCREEN_WIDTH 1024 #define SCREEN_HEIGHT 840 #define MAXSTAR 400 using namespace std; class StarType { public:virtual void Draw(int x, int y, int color) = 0;virtual void Remove(int x, int y) = 0; }; class PointStar:public StarType {void Draw(int x, int y, int color){putpixel((int)x, y, color);setcolor(color);circle(x, y, 1);}void Remove(int x, int y){putpixel((int)x, y,0);setcolor(0);circle(x, y, 1);}}; class RecStar :public StarType {void Draw(int x, int y, int color){putpixel(x, y, color);setcolor(color);rectangle(x - 1,y - 1, x + 1, y + 1);}void Remove(int x, int y){putpixel(x, y, 0);setcolor(0);rectangle(x - 1, y - 1, x + 1, y + 1);} }; class XStar :public StarType {void Draw(int x, int y, int color){setcolor(color);outtextxy(x, y, _T("x"));}void Remove(int x, int y){settextcolor(0);outtextxy(x, y, _T("x"));} };class Star { public:Star(){}~Star() {}void Init();void Move();void Init(StarType* pStarType); public:void NewPos();double m_x;double m_y;int m_color;double m_step;StarType* m_pStarType; }; void Star::Init() {if (m_x == 0){m_x = rand() % SCREEN_WIDTH;}else{m_x = 0;}m_y = rand() % SCREEN_HEIGHT;m_step = (rand() % 5000) / 1000.0 + 1;m_color = (int)(m_step* 255 / 6.0 + 1);m_color = RGB(m_color, m_color, m_color);} void Star::Init(StarType* pStarType) {this->Init();m_pStarType = pStarType; } void Star::Move() {m_pStarType->Remove(m_x,m_y);NewPos();m_pStarType->Draw(m_x, m_y, m_color);} void Star::NewPos() {m_x += m_step;if (m_x > SCREEN_WIDTH){this->Init();}} void main() {srand((unsigned)time(NULL));initgraph(SCREEN_WIDTH, SCREEN_WIDTH);Star star[MAXSTAR];PointStar pointstar;XStar xstar;RecStar restar;for (int i = 0; i < MAXSTAR; i++){switch (i % 3){case 0:star[i].Init(&pointstar);break;case 1:star[i].Init(&pointstar);break;case 2:star[i].Init(&pointstar);break;default:break;}}while (!kbhit){for (int i = 0; i < MAXSTAR; i++){star[i].Move();}Sleep(50);}closegraph();}

以上就是本次本人對(duì)對(duì)繪制星圖的就簡(jiǎn)單理解。歡迎有志于學(xué)好C++的伙伴來(lái)分享C++學(xué)習(xí)心得和友好地評(píng)論。如是有問題看到了有時(shí)間的話會(huì)及時(shí)回復(fù)。感謝各位的觀看。

?

總結(jié)

以上是生活随笔為你收集整理的用C++写一个星空的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂av2020 | 天天干夜夜添 | 欧美亚洲色综久久精品国产 | 香蕉传媒 | 日韩精品极品 | 精品久久久一区 | 欧美午夜性生活 | 天天做天天摸天天爽天天爱 | 中文字幕亚洲无线码在线一区 | 高清国产一区 | 台湾a级艳片潘金莲 | 日批视频在线免费看 | 男人av在线 | 1000部啪啪未满十八勿入 | 亚洲成人黄色影院 | 精品一区二区在线视频 | 日本福利视频导航 | 自拍偷拍第一页 | 国产精品啪啪啪视频 | 欧美一区二区三区四区五区六区 | 蜜臀av无码精品人妻色欲 | 91精品毛片 | 久久久久亚洲av成人网人人网站 | 欧美日韩电影一区二区三区 | 午夜精 | www,超碰| 三上悠亚 在线观看 | 亚洲日本久久 | 成人动漫av在线 | 欧美激情国产精品 | 99精品热| 人与嘼交av免费 | 1000部啪啪 | 性欧美18| 在线观看免费看片 | 香蕉视频黄色片 | 久久国产这里只有精品 | 亚洲青涩在线 | 娇小激情hdxxxx学生 | 91精品在线免费 | 69中国xxxxxxxxx69 国产又爽又色 | 免费a级黄色片 | 爱情岛亚洲品质自拍极速福利网站 | 久久靠逼视频 | 女性裸体瑜伽无遮挡 | 六月丁香久久 | 95看片淫黄大片一级 | 国产综合久久久久 | 图片一区二区 | 五月亚洲| 亚洲人成色777777老人头 | 色综合中文 | 久久午夜剧场 | 日韩美女啪啪 | 日本在线视频观看 | 五月婷婷六月色 | 亚洲欧美天堂网 | 精品丰满少妇一区二区三区 | 美女让男人捅 | 爱爱视频网| 3d动漫啪啪精品一区二区中文字幕 | 男人天堂1024 | 天堂在线视频网站 | 欧美精品99久久 | 国产精品伦一区二区 | 牛牛影视一区二区 | 国产一区二区在线观看免费 | 国产91丝袜在线18 | 日韩成人高清视频 | 琪琪色网| 欧美日韩在线观看免费 | 闫嫩的18sex少妇hd | 自拍偷拍色图 | 亚洲成人a v | 免费黄色小网站 | 久久精品欧美一区 | 黄色国产片 | 误杀1电影免费观看高清完整版 | 免费观看视频在线观看 | 日本人毛片 | 日本伊人久久 | 国产精品人人爽人人爽 | 一级片视频免费观看 | 91国在线 | 日屁网站| 日韩一区二区在线观看 | 欧亚一区二区三区 | a级在线免费观看 | 日本大奶子视频 | 一区二区三区 日韩 | 日韩欧美国产成人 | 欧美人体一区二区 | 亚洲图片在线 | 91视频国产一区 | 婷婷色在线播放 | 国产欧美日韩一区二区三区 | 国产一级性生活片 | 国产欧美在线视频 | 91视频大全|