搜索
查看: 3236|回复: 6
打印 上一主题 下一主题

想给女朋友送个exe做礼物,求思路!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-16 22:35:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
就是想做个简单的exe做礼物,求思路,求灵感,大概要怎么写。

沙发
发表于 2013-2-17 09:12:00 | 只看该作者
玫瑰    5201314  交替、同时出现
板凳
发表于 2013-2-17 12:42:14 | 只看该作者
http   ://tieba.baidu.com/p/2164216198自己看
地板
发表于 2013-8-16 09:57:12 | 只看该作者
LZ必须用C么?复杂不讨好 控制台界面苦逼 坐窗口又太复杂
建议LZ尝试VB来做 实现简单 效果更好
5#
发表于 2013-12-15 22:22:23 | 只看该作者
如果可以,用VC或flash也可以
6#
发表于 2018-12-31 15:36:24 | 只看该作者
本帖最后由 xjzb 于 2018-12-31 15:37 编辑

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
//3维数组,存放LOVE字符
char LETTER[][5][5] = {
        {
                0, 1, 0, 0, 0,
                0, 1, 0, 0, 0,
                0, 1, 0, 0, 0,
                0, 1, 0, 0, 0,
                0, 1, 1, 1, 0
        },
        {
                0, 1, 1, 1, 0,
                0, 1, 0, 1, 0,
                0, 1, 0, 1, 0,
                0, 1, 0, 1, 0,
                0, 1, 1, 1, 0
        },
        {
                0, 1, 0, 1, 0,
                0, 1, 0, 1, 0,
                0, 1, 0, 1, 0,
                0, 1, 0, 1, 0,
                0, 0, 1, 0, 0
        },
        {
                0, 1, 1, 1, 0,
                0, 1, 0, 0, 0,
                0, 1, 1, 1, 0,
                0, 1, 0, 0, 0,
                0, 1, 1, 1, 0
        }
};

int status = 1;//控制线程函数的运行状态
int speed = 500;//字符变换的速度
HANDLE hout;//控制台标准输出句柄
CONSOLE_SCREEN_BUFFER_INFO csbi;//控制台屏幕缓冲区信息结构体
char *symbol[] = {"☆", "★", "△", "※", "▲", "■"};//□ ◆用这些特殊字符组成LOVE中的各个字母
WORD attr[] = {
        FOREGROUND_RED | FOREGROUND_INTENSITY, //红色
        FOREGROUND_GREEN | FOREGROUND_INTENSITY,//绿色
        FOREGROUND_BLUE | FOREGROUND_INTENSITY,        //蓝色
        FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY//白色
};

//在屏幕上画出LOVE
void DrawLove()
{
        int i, j, c;
        COORD pos;        //光标的坐标
        DWORD dwLen;
        for(c = 0; c < sizeof LETTER / sizeof LETTER[0]; ++c)
        {
                for(i = 0; i < 5; ++i)
                {
                        pos.X = c * 5 * 2;
                        pos.Y = i;
                        SetConsoleCursorPosition(hout, pos);
                        for(j = 0; j < 5; ++j)
                        {
                                if(LETTER[c][j])
                                {
                                        //获取当前屏幕缓冲区信息
                                        GetConsoleScreenBufferInfo(hout, &csbi);
                                        printf("%s", symbol[rand() %
                                                (sizeof symbol / sizeof symbol[0])]);
                                        //用指定的颜色填充字符
                                        FillConsoleOutputAttribute(hout, attr[rand() %
                                                (sizeof attr / sizeof attr[0])], 2,
                                                csbi.dwCursorPosition, &dwLen);
                                }
                                else
                                {
                                        printf("  ");//打印两个空格
                                }
                        }                        
                }               
        }        
}
//线程的处理函数
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
        while(1)
        {
                if(status)
                {
                        DrawLove();
                        Sleep(speed);
                }
        }
        return 0;
}

int main()
{
        HANDLE hThread;
        int inChar;
        hout = GetStdHandle(STD_OUTPUT_HANDLE);
        srand((unsigned)time(0));
        hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
        CloseHandle(hThread);
        while(1)
        {
                inChar = getch();
                if('q' == inChar)
                {
                        break;
                }
                else if('w' == inChar && speed > 50)
                        speed -= 50;
                else if('s' == inChar && speed < 500)
                        speed += 50;
                else if('p' == inChar)
                        status = 0;
                else if('c' == inChar)
                        status = 1;
        }        
        return 0;
}

点评

C语言的  发表于 2018-12-31 15:38
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表