| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4752 人关注过本帖
标题:写了一个简单的打字游戏
只看楼主 加入收藏
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
结帖率:100%
收藏
 问题点数:0 回复次数:18 
写了一个简单的打字游戏
程序代码:
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <time.h>

#define    X_LEN            500
#define Y_LEN            150

#define TIM1            1

typedef struct Pos
{
    int            x;
    int            y;
} POS;

LRESULT CALLBACK    WndProc (HWND, UINT, WPARAM, LPARAM);

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC                hdc;
    PAINTSTRUCT        ps;
    RECT            rect;
    static  int     ran;
    static    POS        pos;
    static  TCHAR    ch = 'a';
    static  int        speed;
    static  int     count;
    static  TCHAR    score[20];

    switch (message)
    {
    case WM_CREATE:
        {
            hdc = GetDC (hwnd);
            GetClientRect (hwnd, &rect);
            ReleaseDC (hwnd, hdc);

            srand ((unsigned) time (NULL));
            ran = rand () % rect.right -5;
            count = 0;
            speed = 40;
            sprintf (score, "SCORE:%d", count);
           
            SetTimer (hwnd,    TIM1, speed, NULL);
            pos.x = ran + 5;
            pos.y = rect.left + 10;
        }
        break;
    case WM_PAINT:
        {
            GetClientRect (hwnd, &rect);
            hdc = BeginPaint (hwnd, &ps);
            SetBkColor (hdc, TRANSPARENT); //TRANSPARENT文本字体背景为透明
            SetTextColor (hdc, RGB (0, 255, 0));
            TextOut (hdc, pos.x, pos.y, &ch, 1);
            SetTextColor (hdc, RGB (255, 0, 0));
            TextOut (hdc, 0, 0, score, strlen (score));
            EndPaint (hwnd, &ps);
        }
        break;
    case WM_CHAR:
        {
            TCHAR    cha;
            TCHAR    shu;
       
            sprintf (&shu, "%c", wParam);
            sprintf (&cha, "%c", ch);
            hdc = GetDC (hwnd);
            GetClientRect (hwnd, &rect);
            ReleaseDC (hwnd, hdc);
            ran = rand () % rect.right -5;
            if (shu == cha)
            {
                speed = 2 + rand () % 10;
                count++;
                sprintf (score, "SCORE:%d", count);
                ran = rand () % rect.right -5;
                pos.x = ran;
                pos.y = 0;
           
                ran = rand () % rect.right -5;

                ch = 'a' + rand () % 26;

                if (speed >= 6)
                {
                    speed -= 5;
                    KillTimer (hwnd, TIM1);
                    SetTimer (hwnd, TIM1, speed, NULL);
                }

                InvalidateRect (hwnd, NULL, TRUE);
            }
        }
        break;
    case WM_TIMER:
        {
            hdc = GetDC (hwnd);
            GetClientRect (hwnd, &rect);
            ReleaseDC (hwnd, hdc);
            pos.y += 2;
            if (pos.y > rect.bottom)
            {
                count--;
                if (count < -5)
                {
                    KillTimer (hwnd, TIM1);
                    MessageBox (hwnd, TEXT ("你输了"), TEXT ("哈哈"), MB_OK | MB_ICONINFORMATION);
                    DestroyWindow (hwnd);
                }
                sprintf (score, "SCORE:%d", count);
                pos.y = rect.top + 5;
                pos.x = ran;
                if (pos.x > rect.right)
                {
                    pos.x = rect.left + 5;
                }
                ch += 1;
                if (ch > 'a' + 25)
                {
                    ch = 'a';
                }
            }
            InvalidateRect (hwnd, NULL, TRUE);
        }
        break;
    case WM_CLOSE:
        {
            DestroyWindow (hwnd);
        }
        break;
    case WM_DESTROY:
        {
            PostQuitMessage (0);
        }
        break;
    default:
        return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{
    WNDCLASS        wc;
    HWND            hwnd;
    MSG                msg;
    TCHAR            Title[125] = "打字练习by瓦药墙";
    TCHAR            ClsName[125] = "ClsName";

    wc.cbClsExtra            =    0;
    wc.cbWndExtra            =    0;
    wc.hbrBackground        =    (HBRUSH) GetStockObject (BLACK_BRUSH);
    wc.hCursor                =    LoadCursor (NULL, IDC_ARROW);
    wc.hIcon                =    LoadIcon (NULL, IDI_APPLICATION);
    wc.hInstance            =    hInstance;
    wc.lpfnWndProc            =    WndProc;
    wc.lpszClassName        =    ClsName;
    wc.lpszMenuName            =    NULL;
    wc.style                =    CS_HREDRAW | CS_VREDRAW;

    if ( !RegisterClass (&wc) )
    {
        MessageBox (NULL, "RegisterClass Error", "Error", MB_OK | MB_ICONERROR);
        return -1;
    }
   
    hwnd = CreateWindow (ClsName, Title, WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, X_LEN, Y_LEN, NULL, NULL, hInstance, NULL);
   
    ShowWindow (hwnd, SW_SHOW);
    UpdateWindow (hwnd);
    ShowCursor (FALSE);

    while ( GetMessage (&msg, NULL, 0, 0) > 0 )
    {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }

    return msg.wParam;
}

//-----------------------------------------------------

//算法与数据结构q群:87860221 欢迎志同道和的朋友一起讨论进步

搜索更多相关主题的帖子: 打字 游戏 
2010-10-18 11:42
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
先顶一下~,看到最后一句发现楼主貌似醉翁之意不在酒哦~
2010-10-18 11:49
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
哎,米办法
2010-10-18 11:59
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
以下是引用遮天云在2010-10-18 11:49:43的发言:

先顶一下~,看到最后一句发现楼主貌似醉翁之意不在酒哦~
那在什么? 美女?

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-18 12:27
电脑小童
Rank: 2
等 级:论坛游民
帖 子:77
专家分:52
注 册:2010-10-16
收藏
得分:0 
你的代码行不通
2010-10-18 13:09
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
回复 4楼 vandychan
说不定有美女加入哦
2010-10-18 14:04
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
上个效果图看看?
2010-10-18 14:56
twp90
Rank: 2
等 级:论坛游民
帖 子:26
专家分:14
注 册:2008-11-27
收藏
得分:0 
就是应该给个效果图看看
2010-10-18 14:57
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
打字游戏.rar (18.37 KB)

2010-10-18 17:00
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
看来楼主对C语言的图形模式掌握的很好

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-10-18 17:09
快速回复:写了一个简单的打字游戏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020998 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved