这代码没问题吧///////////////////////
codeblocks吧
全部回复
仅看楼主
level 5
☞光影☜ 楼主
这代码没问题吧
/////////////////////////////////////////////////////////////////////
// 程序名称:数字雨
// 编译环境:VC6.0 EasyX
// 作  者:flx413
// 时 间:2016-5-2
/////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <windows.h>
#include <graphics.h>
#include <stdlib.h>
#include <time.h>
#define SCREEN_WIDTH 1366
#define SCREEN_HEIGHT 768
#define DEF_RAIN_NUM 91 //雨的列数
//数字雨开始的位置
int g_nRainPos[DEF_RAIN_NUM] = { 0 };
//数字雨的字符串
char g_strRain[DEF_RAIN_NUM][10] = { 0 };
//随机产生一个字母
char CreateRandomNum() {
char nRandomNum = 0;
while( 1 ) {
nRandomNum = rand() % 123; //随机产生0~122的一个字符
if( ( nRandomNum >= 65 && nRandomNum <= 90 ) || nRandomNum >= 97 ) {
return nRandomNum;
}
}
}
//随机产生数字雨的开始位置
void InitPos() {
for( int i = 0; i < DEF_RAIN_NUM; i++ ) {
g_nRainPos[i] = rand() % SCREEN_HEIGHT;
}
}
//初始化数字雨
void InitNumRain() {
for( int i = 0; i < DEF_RAIN_NUM; i++ ) {
for( int j = 0; j < 10; j++ ) {
g_strRain[i][j] = CreateRandomNum();
}
}
}
//显示雨
void ShowNumRain() {
for( int i = 0; i < DEF_RAIN_NUM; i++ ) {
//设置字体颜色
settextcolor( RGB( 255, 255, 255 ) ); //白色
for( int j = 0; j < 10; j++ ) {
outtextxy( i * 15, g_nRainPos[i] - 15 * j, g_strRain[i][j] );
settextcolor( RGB( 0, 255 - 28 * j, 0 ) );
}
}
for( i = 0; i < DEF_RAIN_NUM; i++ ) {
g_nRainPos[i] += 15; //屏幕刷新后雨的位置下降15
}
for( i = 0; i < DEF_RAIN_NUM; i++ ) {
if( g_nRainPos[i] - 10 * 15 >= SCREEN_HEIGHT ) {
g_nRainPos[i] = 0;
}
}
}
int main() {
srand((unsigned)time(NULL));
initgraph( SCREEN_WIDTH, SCREEN_HEIGHT );
InitPos();
InitNumRain();
BeginBatchDraw();
while( 1 ) {
InitNumRain();
ShowNumRain();
FlushBatchDraw();
Sleep( 100 ); //延时0.1秒
cleardevice(); //清空屏幕
}
EndBatchDraw();
closegraph();
return 0;
}
2019年06月23日 12点06分 1
level 10
修改了一下,CB下可以运行了,
/////////////////////////////////////////////////////////////////////
// 程序名称:数字雨
// 编译环境:VC6.0 EasyX
// 作  者:flx413
// 时 间:2016-5-2
/////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600
#define DEF_RAIN_NUM 91 //雨的列数
//数字雨开始的位置
int g_nRainPos[DEF_RAIN_NUM] = { 0 };
//数字雨的字符串
char g_strRain[DEF_RAIN_NUM][10] = { 0 };
//随机产生一个字母
char CreateRandomNum()
{
char nRandomNum = 0;
while( 1 )
{
nRandomNum = rand() % 123; //随机产生0~122的一个字符
if( ( nRandomNum >= 65 && nRandomNum <= 90 ) || nRandomNum >= 97 )
{
return nRandomNum;
}
}
}
//随机产生数字雨的开始位置
void InitPos()
{
int i;
for(i = 0; i < DEF_RAIN_NUM; i++ )
{
g_nRainPos[i] = rand() % SCREEN_HEIGHT;
}
}
//初始化数字雨
void InitNumRain()
{
int i, j;
for( i = 0; i < DEF_RAIN_NUM; i++ )
{
for( j = 0; j < 10; j++ )
{
g_strRain[i][j] = CreateRandomNum();
}
}
}
//显示雨
void ShowNumRain(HDC hdc)
{
int i, j;
char str[2] = {0};
for( i = 0; i < DEF_RAIN_NUM; i++ )
{
//设置字体颜色
//settextcolor( RGB( 255, 255, 255 ) ); //白色
SetTextColor(hdc, RGB( 255, 255, 255 ));
for( j = 0; j < 10; j++ )
{
//outtextxy( i * 15, g_nRainPos[i] - 15 * j, g_strRain[i][j] );
str[0]=g_strRain[i][j];
TextOutA(hdc, i * 15, g_nRainPos[i] - 15 * j, str, 1);
SetTextColor(hdc, RGB( 0, 255 - 28 * j, 0 ) );
}
}
for( i = 0; i < DEF_RAIN_NUM; i++ )
{
g_nRainPos[i] += 15; //屏幕刷新后雨的位置下降15
}
for( i = 0; i < DEF_RAIN_NUM; i++ )
{
if( g_nRainPos[i] - 10 * 15 >= SCREEN_HEIGHT )
{
g_nRainPos[i] = 0;
}
}
}
HWND createw(int width, int height);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void OnTimer(HWND);
int main()
{
HWND hwnd;
MSG msg;
srand((unsigned)time(NULL));
//initgraph( SCREEN_WIDTH, SCREEN_HEIGHT );
InitPos();
InitNumRain();
//BeginBatchDraw();
hwnd = createw(SCREEN_WIDTH, SCREEN_HEIGHT);
ShowWindow(hwnd, SW_NORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg, 0, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//while( 1 )
//{
// InitNumRain();
// ShowNumRain();
// FlushBatchDraw();
// Sleep( 100 ); //延时0.1秒
// cleardevice(); //清空屏幕
//}
//EndBatchDraw();
//closegraph();
return 0;
}
HWND createw(int width, int height)
{
WNDCLASS wnd;
HWND hwnd;
memset(&wnd, 0, sizeof(WNDCLASS));
wnd.hInstance = GetModuleHandle(NULL);
wnd.hCursor = LoadCursor(NULL,IDC_ARROW);
wnd.lpfnWndProc= WndProc;
wnd.lpszClassName = _T("MyJpeg");
wnd.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wnd.style = CS_DBLCLKS;/*CS_HREDRAW | CS_VREDRAW;*/ //原来如此,指定这两个引起重刷新
RegisterClass(&wnd);
hwnd = CreateWindow(wnd.lpszClassName, _T("DigitRian"), WS_OVERLAPPEDWINDOW,
100, 100, width, height, NULL, NULL, wnd.hInstance, NULL);
if(!hwnd)
{
fprintf(stderr, "create window error!\n");
}
return hwnd;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
case WM_CREATE:
SetTimer(hwnd, 0, 100, NULL);
return TRUE;
case WM_TIMER:
OnTimer(hwnd);
break;
case WM_CLOSE:
DestroyWindow(hwnd);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wp, lp);
}
return 0;
}
void OnTimer(HWND hwnd)
{
RECT rc = {0, 0, SCREEN_WIDTH, SCREEN_HEIGHT};
HDC hdc = GetDC(hwnd);
SetBkMode(hdc, TRANSPARENT);
FillRect(hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH));
InitNumRain();
ShowNumRain(hdc);
ReleaseDC(hwnd, hdc);
}
2019年06月23日 15点06分 3
谢谢
2019年06月24日 01点06分
level 10
上面的代码链结时需要添加gdi32库,
可以手动编译:gcc -Wall -O2 -s -o digitrain.exe main.c -lgdi32
easyx代码不支持codeblocks。
2019年06月23日 15点06分 5
老哥NB
2019年06月24日 00点06分
level 12
楼上老哥的程序运行图:
2019年06月24日 02点06分 6
吧主大大,你这什么软件运行的啊
2019年06月24日 03点06分
@☞光影☜ 就是楼上老哥给你改的代码,他不是说了么,改好后,再链接一下gdi32.dll,就可以在codeblocks中编译运行了。
2019年06月24日 03点06分
@沉默在哭诉💤 哦,我试试
2019年06月24日 03点06分
@☞光影☜ 如果不知道如何添加库,可以搜索一下CB相关的教程。
2019年06月24日 14点06分
1