c語言表白程序代碼

  雙十一要到了,好激動啊!!!

    

  是時候準備出手了!

    

? ? ? 花了一天的時間寫的表白代碼。

    

  表示自己弱弱的.....

   ?

? ? ? ? 看了網上好多都是js寫的,感覺碉堡了!js用的不熟,前端不好,java,Python寫起來一定很順手吧,但是還是決定用c寫一下,簡單的界面,大神路過不喜勿噴。下面和大家一起分享一下!

? ? ? ??

代碼如下:

  順便所以下:如果在windows上運行該代碼,需要pthread庫,我用的Dev c++寫的,自己裝上了這個庫!

        運行程序下載:http://files.cnblogs.com/files/hujunzheng/love.zip

該程序主要包含windows編程,以及簡單的線程,數學邏輯處理(弱弱的說一句,數學不好,動態心形圖案借鑒的哦)。 簡單介紹一下一些函數的功能。
1.GetStdHandle(STD_OUTPUT_HANDLE);//獲取控制臺輸出句柄
2.SetConsoleScreenBufferSize(o, size); // 重新設置緩沖區大小
3.SMALL_RECT rc = {0, 0, 100-1, 40-1}; // 重置窗口位置和大小
SetConsoleWindowInfo(o, true, &rc);
4.SetConsoleTitle("LOVE");//設置控制臺標題
5.system("color ec"); // 設置為紅色,顯得浪漫溫馨點
6.SetConsoleTextAttribute(o, hjzgg_color[color_index]);//設置下個即將輸出字體的前景色和背景色
7.SetConsoleCursorPosition(o, coord);//設置控制臺光標的位置
8.WriteConsole(o, one_word, 2, NULL, 0);//在控制臺光標的位置處連續輸出一定長度的字符串
9.pthread_mutex_lock(&mutex);//給線程上鎖,利用互斥變量
10.pthread_mutex_unlock(&mutex);給線程解鎖
11.pthread_create(&tid[1], NULL, first_init_down, NULL); //創建線程
12.pthread_join(tid[0], NULL);//用來等待一個線程的結束
13.pthread_cond_timedwait(&cond, &mutex, &outtime);//線程進入等待,一定時間后自行蘇醒

?

#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <tchar.h>
#include <pthread.h> 
#include <time.h>
#include <string.h>
#include <sys/time.h>pthread_mutex_t mutex;//互斥信號量
pthread_cond_t cond;//條件變量 
HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE);
_TCHAR buffer[25][80] = { _T(' ') };
_TCHAR ramp[] = _T(".:-=+*#%@");WORD hjzgg_color[7]={BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_RED | BACKGROUND_RED|BACKGROUND_GREEN, //red on yellow
    BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_GREEN | BACKGROUND_RED|BACKGROUND_GREEN,BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_BLUE | BACKGROUND_RED|BACKGROUND_GREEN,BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE | BACKGROUND_RED|BACKGROUND_GREEN,BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN | BACKGROUND_RED|BACKGROUND_GREEN,BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE | BACKGROUND_RED|BACKGROUND_GREEN,BACKGROUND_INTENSITY|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE | BACKGROUND_RED|BACKGROUND_GREEN};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;
}char flower1[11][22]={//一行20個字符 
"         {@}        ",
"      {@} * {@}     ",
"   {@} * {@} * {@}  ",
"{@}* {@} * {@} * {@}",
" \\ {@} * {@} * {@} /",
"    \\ \\ \\ L / / /   ",
"     \\\\ \\ O / //    ",
"       \\\\ V //      ",
"        \\\\E//       ",
"         >=<        ",
"        //*\\\\       "
};char flower2[9][28]={//一行27個字符 
".....@---------------@.....",
"-- @ @ @ --------- @ @ @ --",
".@ @\\@/@ @-------@ @\\@/@ @.",
".\\@|@|@|@/-....--\\@|@|@|@/.",
". \\\\\\|/// --..--- \\\\\\|/// -",
" - \\\\|// --..----- \\\\|//.--",
" -- \\|/--..---.---- \\|/---.",
" -- =&= ---..------ =&= ---",
" -- /|\\ --------.---/|\\ -.-"
} ;char piercing_arrow[][34]={//一行33個字符 
"      ☆☆ ☆☆  ☆☆ ☆☆       ",
"     ★★      ★       ★★     ",
"    ☆☆   快樂每一天    ☆☆    ",
"     ★★               ★★     ",
">>>---------I LOVE YOU --------->",
"        ★★         ★★        ",
"          ☆☆     ☆☆          ",
"            ★★  ★★           ",
"               ☆☆              "
};char love_word[][6][60]={//一共5個部分, 三行情書 
    { "你  如  水  的  眸  光  籠  著  江  南  的  煙  雨","映  入  我  那  一  寸  一  寸  消  融  的  心","從  那  一  刻  我  不  在  屬  于  自  己"},{"我  默  默  收  集  你  的  所  有","不  知  還  要  多  久","卻  不  曾  厭  倦"},{"當  初 ,初  見  只  道  是  尋  常","尋  覓 ,何  枝  可  化  深  千  億","猶  道 ,碧  桃  影  里  碧  三  聲" } ,{"在  這  個  年  紀  遠  遠  地  看  著  你","日  光  美  好  的  一  瀉  千  里","溫  暖  著  一  個  卑  微  而  簡  單  的  心"} ,{"你  的  一  紙  信  箋","壓  在  書  底","壓  過  了  青  春  的  夏  季","從  愛  你  的  花  季","一  直  等  到","愛  你  的  暮  年"} 
} ;void init_screen(){COORD size = {100, 40};SetConsoleScreenBufferSize(o, size); // 重新設置緩沖區大小SMALL_RECT rc = {0, 0, 100-1, 40-1}; // 重置窗口位置和大小SetConsoleWindowInfo(o, true, &rc);SetConsoleTitle("LOVE");system("color ec"); // 設置為紅色,顯得浪漫溫馨點
}void* show_love_word(void* arg){srand((unsigned)time(NULL));//隨機每束花是否顯示 while(true) {int word_index = rand()%5;int col = 70;int row_index = 3;if(word_index == 4)row_index = 6;//顯示word int color_index = rand()%4; for(int i=0; i<row_index; ++i){int row = 1;for(int j=0; love_word[word_index][i][j]; j+=2){char one_word[2];//得到一個漢字 sprintf(one_word, "%c%c", love_word[word_index][i][j], love_word[word_index][i][j+1]);COORD coord = {col, row};pthread_mutex_lock(&mutex);SetConsoleTextAttribute(o, hjzgg_color[color_index]);SetConsoleCursorPosition(o, coord);WriteConsole(o, one_word, 2, NULL, 0);coord.Y += 1;if(love_word[word_index][i][j+2]){SetConsoleCursorPosition(o, coord);WriteConsole(o, "__", 2, NULL, 0);}SetConsoleTextAttribute(o, hjzgg_color[0]);pthread_mutex_unlock(&mutex);++row;Sleep(100);}col+=4;}Sleep(2000);//擦除Wordcol-=4;for(int i=row_index-1; i>=0; --i) {char hjzgg_word[60];memcpy(hjzgg_word, love_word[word_index][i], sizeof(love_word[word_index][i]));int len_hjzgg_word = strlen(hjzgg_word);int len_word = len_hjzgg_word;bool is_first = true;while(len_word >= 0) {int row = 1;for(int j=0; j<len_hjzgg_word; j+=2){char one_word[2];//得到一個漢字 sprintf(one_word, "%c%c", hjzgg_word[j], hjzgg_word[j+1]);COORD coord = {col, row};pthread_mutex_lock(&mutex);SetConsoleTextAttribute(o, hjzgg_color[color_index]);SetConsoleCursorPosition(o, coord);WriteConsole(o, one_word, 2, NULL, 0);coord.Y += 1;if(j+2 == len_word){SetConsoleCursorPosition(o, coord);WriteConsole(o, "__", 2, NULL, 0);++row;}SetConsoleTextAttribute(o, hjzgg_color[0]);pthread_mutex_unlock(&mutex);++row;}if(is_first){is_first = false;hjzgg_word[len_hjzgg_word++] = ' ';hjzgg_word[len_hjzgg_word++] = ' ';} else {len_hjzgg_word-=2;}hjzgg_word[--len_word] = ' ';hjzgg_word[--len_word] = ' ';Sleep(20);}col-=4;}Sleep(1000);}
}void* first_init_top(void* arg){char tmp[80];for(int ld=0; ld < 12; ++ld){COORD coord_top = { 0, ld};memset(tmp, ' ', sizeof(tmp));int cc = 0;while(cc < 60){while(buffer[ld][cc]==' ') ++cc;tmp[cc] = buffer[ld][cc];++cc;pthread_mutex_lock(&mutex);SetConsoleCursorPosition(o, coord_top);WriteConsole(o, tmp, 60, NULL, 0);pthread_mutex_unlock(&mutex);Sleep(15);}}
}void* screen_down_flower(void* arg){//從第26行開始打印 srand((unsigned)time(NULL));//隨機每束花是否顯示 int flower_row[3] = {11, 9, 11};int flower_col[3] = {20, 27, 20};int flower_begin_col[3] = {5, 33, 70};int flower_begin_row[3] = {26, 28, 26};struct timeval now;struct timespec outtime;pthread_mutex_lock(&mutex);while(true){int k = 0;while(k < 3){char flower[50][50] = {' '};int color_index = rand()%7;SetConsoleTextAttribute(o, hjzgg_color[color_index]);if(k==0 || k==2){for(int i=0; i<flower_row[k]; ++i)for(int j=0; j<flower_col[k]; ++j)flower[i][j] = flower1[i][j];} else {for(int i=0; i<flower_row[k]; ++i)for(int j=0; j<flower_col[k]; ++j)flower[i][j] = flower2[i][j];}for(int i=flower_begin_row[k], j=0; j<flower_row[k]; ++j, ++i){COORD coord = {flower_begin_col[k], i};SetConsoleCursorPosition(o, coord);WriteConsole(o, flower[j], flower_col[k], NULL, 0);}++k;SetConsoleTextAttribute(o, hjzgg_color[0]);//重新設置為原來的原色 gettimeofday(&now, NULL);outtime.tv_sec = now.tv_sec;outtime.tv_nsec = now.tv_usec * 100000;pthread_cond_timedwait(&cond, &mutex, &outtime);} }pthread_mutex_unlock(&mutex);
} void* first_init_down(void* arg){char tmp[80];for(int rd=24; 12 <= rd; --rd){COORD coord_down = { 0, rd };SetConsoleCursorPosition(o, coord_down);memset(tmp, ' ', sizeof(tmp));int cc = 60;while(cc >= 0){while(buffer[rd][cc]==' ') --cc;tmp[cc] = buffer[rd][cc];--cc;pthread_mutex_lock(&mutex);SetConsoleCursorPosition(o, coord_down);WriteConsole(o, tmp, 60, NULL, 0);pthread_mutex_unlock(&mutex);Sleep(15);}}
}
//一箭穿心圖案
void show_piercing_arrow(){for(int i=0; i<9; ++i) {pthread_mutex_lock(&mutex);COORD coord_down = { 13, i+7 };SetConsoleCursorPosition(o, coord_down);WriteConsole(o, piercing_arrow[i], 33, NULL, 0);pthread_mutex_unlock(&mutex);}
}void first_init(){show_piercing_arrow();pthread_t tid[4];
//    screen_down_flowerpthread_create(&tid[2], NULL, screen_down_flower, NULL); 
//  show_love_wordpthread_create(&tid[3], NULL, show_love_word, NULL); 
//    心型 init_first pthread_mutex_init(&mutex, NULL);pthread_cond_init(&cond, NULL);pthread_create(&tid[0], NULL, first_init_top, NULL); pthread_create(&tid[1], NULL, first_init_down, NULL); pthread_join(tid[0], NULL);pthread_join(tid[1], NULL);
}int main() {init_screen();bool first = true;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++ = ' ';}}if(first){first = false;first_init();}else {pthread_mutex_lock(&mutex);for (sy = 0; sy < 25; sy++) {COORD coord = { 0, sy };SetConsoleCursorPosition(o, coord);WriteConsole(o, buffer[sy], 60, NULL, 0);}pthread_mutex_unlock(&mutex);}Sleep(33);}return 0;
}

?

轉載于:https://www.cnblogs.com/hujunzheng/p/4922219.html

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

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

相關文章

tiny4412移植tslib庫

1、將tslib-1.4.tar.gz拷貝到虛擬機某個路徑進行解壓 2、進入解壓路徑tslib 3、執行#./autogen.sh 如果提示&#xff1a;./autogen.sh: 4: ./autogen.sh: autoreconf: not found 原因&#xff1a;沒有安裝automake工具, 解決辦法:需要安裝此工具&#xff1a; apt-get instal…

移植QT到tiny4412開發板

目錄&#xff08;一&#xff09; 環境準備&#xff08;二&#xff09; Qt源代碼下載&#xff08;三&#xff09; 移植tslib庫&#xff08;四&#xff09;操作流程1.解壓qt源碼包2.配置編譯環境3.生成Makefile4.編譯安裝5.安裝一些庫用來支持 qt6. 添加以下內容到開發板目錄下的…

c++面試常用知識(sizeof計算類的大小,虛擬繼承,重載,隱藏,覆蓋)

一. sizeof計算結構體 注&#xff1a;本機機器字長為64位 1.最普通的類和普通的繼承 #include<iostream> using namespace std;class Parent{ public:void fun(){cout<<"Parent fun"<<endl;} }; class Child : public Parent{ public:void fun(){…

嵌入式面試題(一)

目錄1 關鍵字volatile有什么含義&#xff1f;并給出三個不同的例子2. c和c中的struct有什么不同&#xff1f;3.進程和線程區別4.ARM流水線5.使用斷言6 .嵌入式系統的定義7 局部變量能否和全局變量重名&#xff1f;8 如何引用一個已經定義過的全局變量&#xff1f;9、全局變量可…

能ping通ip但無法ping通域名和localhost //ping: bad address 'www.baidu.com'

錯誤描述&#xff1a; ~ # ping localhost ping: bad address localhost原因&#xff0c;在/etc目錄下缺少hosts文件&#xff0c;將linux中的/etc hosts文件拷入即可 ~ # ping localhost PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: seq0 ttl64 tim…

eclipse導入web項目之后項目中出現小紅叉解決辦法

項目中有小紅叉我遇到的最常見的情況&#xff1a; 1、項目代碼本身有問題。&#xff08;這個就不說了&#xff0c;解決錯誤就OK&#xff09; 2、項目中的jar包丟失。&#xff08;有時候eclipse打開時會出現jar包丟失的情況&#xff0c;關閉eclipse重新打開或者重新引入jar包就O…

arm開發板通過網線連接筆記本電腦上外網

需要工具&#xff1a;arm開發板&#xff0c;網線&#xff0c;一臺雙網卡的win7筆記本電腦&#xff08;筆記本電腦一般都是雙網卡&#xff09; 一、筆記本電腦需要先連上外網&#xff0c;可以連上家里的WIFI&#xff0c;或者手機開熱點&#xff08;本人未測試過連接手機的熱點&…

windows下實現Git在局域網使用

1.首先在主機A上創建一個文件夾用于存放你要公開的版本庫。然后進入這個文件夾&#xff0c;右鍵->Git create repository here&#xff0c;彈出的窗口中勾選Make it Bare&#xff01;之后將這個文件夾完全共享&#xff08;共享都會吧&#xff1f;注意權限要讓使用這個文件夾…

解決linux下QtCreator無法輸入中文的情況

安裝了QtCreator(Qt5.3.1自帶版本)后無法輸入中文&#xff0c;確切的說是無法打開輸入法。以前使用iBus輸入法的時候沒有這個問題&#xff0c;現在使用sougou輸入法才有的這個問題。 可以查看此文 http://www.cnblogs.com/oloroso/p/5114041.html 原因 有問題就得找原因&…

lintcode 滑動窗口的最大值(雙端隊列)

題目鏈接&#xff1a;http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑動窗口的最大值 給出一個可能包含重復的整數數組&#xff0c;和一個大小為 k 的滑動窗口, 從左到右在數組中滑動這個窗口&#xff0c;找到數組中每個窗口內的最大值。 樣例 給出數組 [1…

你的main函數規范嗎?

在學習c語言的時候&#xff0c;有一個函數一直被我們使用&#xff0c;那就是main函數&#xff0c;但是你知道標準里面是怎么規定它的寫法嗎&#xff1f; 平時看見的main函數有下面這幾種&#xff1a; 1.int main(void){ }2.int main(){ }3.int main(int argc, char *argv[])…

lintcode 最長上升連續子序列 II(二維最長上升連續序列)

題目鏈接&#xff1a;http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最長上升連續子序列 II 給定一個整數矩陣&#xff08;其中&#xff0c;有 n 行&#xff0c; m 列&#xff09;&#xff0c;請找出矩陣中的最長上升連續子序列。&a…

適用于Linux的Windows子系統WSL

以前使用的都是在虛擬機里安裝linux&#xff0c;最近才發現在win10提供了WSL(Windows Subsystem for Linux) &#xff0c;簡單來說就是可以在win10里面直接使用Linux。 &#xff08;一&#xff09;首先打開Microsoft Store , 搜索 Linux &#xff08;二&#xff09;選擇自己需…

jsp通過易寶方式實現在線支付

項目下載地址: https://github.com/hjzgg/OnlinePayment 參考&#xff1a;http://blog.csdn.net/jadyer/article/details/7380259?utm_sourcetuicool&utm_mediumreferral 效果圖1&#xff1a;請求界面 效果圖2&#xff1a;地支付請求和易寶之間建立連接之后跳轉到相應的銀…

permission denied是什么鬼?

問題&#xff1a;在PC端編譯了一個arm芯片的測試程序&#xff0c;出現了permission denied 解決辦法&#xff1a; 1.給文件賦予可執行權限 chmod ax xxx這是一般第一反應會想到的答案 2. 有時候已經有可執行權限&#xff0c;還是提示上面的錯誤此時要注意你的交叉編譯器是否正…

CSS中div覆蓋另一個div

將一個div覆蓋在另一個div上有兩種手段&#xff1a;一是設置margin為負值&#xff0c;二是設置絕對定位。 可以根個人情況設置z-index的值 1->position 為absolute的情況 <html> <head> <style> #div1{position:absolute;width:300px;height:300px;backgr…

nand flash和nor flash的這幾點區別你知道嗎?

這篇文章講解nand flash和nor flash的特點和區別&#xff0c;不涉及存儲原理的講解 &#xff08;一&#xff09;Flash簡介 FLASH是一種存儲芯片&#xff0c;全名叫Flash EEPROM Memory&#xff0c;通地過程序可以修改數據&#xff0c;即平時所說的“閃存”。Flash又分為NAND f…

c++堆

c reference: http://www.cplusplus.com/reference/algorithm/make_heap/ heap并不屬于STL容器組件&#xff0c;它分為 max heap 和min heap&#xff0c;在缺省情況下&#xff0c;max-heap是優先隊列&#xff08;priority queue&#xff09;的底層實現機制。 而這個實現機制中的…

關于Ubuntu拒絕root用戶ssh遠程登錄

今天使用SecureCRT遠程登陸Ubuntu時一直提示密碼或用戶名錯誤&#xff0c;實際輸入是正確的&#xff0c;我按照網上教程改還是不行&#xff0c;后來才想起來我是root登錄的&#xff0c;Ubuntu默認的ssh遠程root登錄是關閉的&#xff0c;在這里記錄一下 1.編輯配置文件 #sudo v…

windows8建立局域網的方法

win8建立局域網的方法&#xff1a;1、首先筆記本有無線網卡且支持 虛擬WIFI ;2、按winX鍵&#xff0c;選擇"命令提示符(管理員)A"; 3、輸入"netsh wlan set hostednetwork modeallow ssid網絡名稱 key我的密碼" ; 4、接著輸入"netsh wlan start hoste…