C语言一个有趣的小程序(点不到的按钮)

程序源码如下:
编译环境:
vs2017 +win10

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>
#include <tchar.h>
 
HINSTANCE g_hInstance = 0;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPreInstance,
    LPSTR lpCmdLine,
    int nShowCmd
)
{
    g_hInstance = hInstance;
 
    srand((unsigned)time(NULL));
 
    //1.注册窗口类
    WNDCLASS wc = { 0 };
    wc.lpszClassName = _T("MyClass");
    wc.lpfnWndProc = WndProc;
    wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
 
    RegisterClass(&wc);
 
    //2.创建窗口
    HWND hWnd = CreateWindow(
        wc.lpszClassName,
        _T("顽皮的按钮"),
        WS_OVERLAPPEDWINDOW,
        200, 100,
        640, 480,
        NULL,
        NULL,
        g_hInstance,
        0
    );
 
    //3.更新显示窗口
    UpdateWindow(hWnd);
    ShowWindow(hWnd, SW_SHOW);
 
    //4.消息循环
    MSG Msg = { 0 };
    while (GetMessage(&Msg, 0, 0, 0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return (int)Msg.lParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    static int nCnt = 0;
    switch (uMsg)
    {
    case WM_CREATE:
    {
        HWND hButton = CreateWindow(
            _T("button"),
            _T("来点我"),
            WS_CHILD | WS_VISIBLE,
            10, 10,
            80, 45,
            hWnd,
            HMENU(0x1000),
            g_hInstance,
            0
        );
    }break;
    case WM_COMMAND:
    {
        DWORD nCode = HIWORD(wParam);
        DWORD nId = LOWORD(wParam);
        if (nId == 0x1000 && nCode == BN_CLICKED)
        {
            if (nCnt == 10)
            {
                MessageBox(hWnd, _T("恭喜你点到了!"), _T("嘿嘿"), MB_OK);
                PostMessage(hWnd, WM_CLOSE, 0, 0);
            }
            HWND hButton1 = GetDlgItem(hWnd, 0x1000);
            int x = rand() % 520;
            int y = rand() % 390;
            MoveWindow(hButton1, x, y, 100, 50, true);
            UpdateWindow(hWnd);
            nCnt++;
        }
    }break;
    case WM_CLOSE:
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这是一个比较通用的方法来编写一个小游戏用 C 语言: 1. 首先,确定游戏的目标和规则。这可能包括游戏的玩法、胜负条件、游戏元素和游戏流程等。 2. 其次,确定游戏的用户界面。这可能包括游戏的菜单、按钮、文本框、图像和其他元素,以及如何显示这些元素并响应用户输入。 3. 然后,设计游戏的数据结构和算法。这可能包括游戏状态、游戏元素的位置和状态、分数和其他游戏变量,以及如何更新这些变量并实现游戏规则。 4. 最后,实现游戏的代码。这可能包括初始化游戏、绘制游戏界面、更新游戏状态、处理用户输入、结束游戏等。 注意:这只是一个大致的指导方针,实际的游戏开发过程可能会有所不同。 ### 回答2: 我使用C语言编写了一个经典的文本冒险小游戏。游戏的基本思路是玩家需要在一个虚拟的迷宫中探索并寻找出口。 游戏开始时,玩家将在迷宫的入口处开始。玩家可以通过输入命令来控制角色的移动,例如"w"表示向上移动,"s"表示向下移动,"a"表示向左移动,"d"表示向右移动。玩家还可以输入"exit"命令来退出游戏。 迷宫的地图是一个二维数组,其中不同的字符表示不同的地形,例如"#"表示墙壁,"."表示通道。玩家只能穿过通道,不能穿过墙壁。玩家每移动一步,游戏就会更新地图并显示新的位置。 玩家需要通过探索每一个房间来找到通往下一个房间的出口。在某些房间中,玩家可能会遇到一些障碍物或陷阱,这些会耗费玩家的生命值。当玩家耗尽生命值时,游戏结束。 为了增加游戏的乐趣和挑战,我还添加了一些额外的功能。例如,玩家可以遇到一些隐藏的宝物,收集宝物可以得到额外的积分。另外,玩家还可以在特定地点使用道具,例如增加生命值或暂停敌人的移动。 整个游戏的开发过程涉及许多C语言编程的基本概念,例如循环结构、条件语句、函数等。通过编写这个小游戏,我巩固了自己对C语言的理解,并提高了自己的编程能力。 总而言之,使用C语言编写小游戏可以锻炼编程技能,提高逻辑思维能力,并为其他更复杂的游戏开发项目打下基础。 ### 回答3: C语言是一种功能强大的编程语言,也可以用来编写简单的小游戏。在编写游戏之前,我们首先需要了解游戏的基本要求和规则。下面是一个用C语言编写的猜数字小游戏的示例: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int answer, guess, attempts; attempts = 0; // 生成随机数作为答案 srand(time(0)); answer = rand() % 100 + 1; printf("欢迎来到猜数字游戏!\n"); do { printf("请输入一个1到100之间的整数:"); scanf("%d", &guess); attempts++; if (guess > answer) { printf("猜错了,太大了!请再试一次。\n"); } else if (guess < answer) { printf("猜错了,太小了!请再试一次。\n"); } else { printf("恭喜你猜对了!答案是 %d。\n", answer); printf("你用了 %d 次尝试。\n", attempts); } } while (guess != answer); return 0; } ``` 在这个小游戏中,程序会生成一个1到100之间的随机数作为答案,然后玩家需要输入一个整数进行猜测。程序会根据猜测的结果给出相应的提示,直到玩家猜对为止。游戏结束时,程序会显示玩家猜对的次数。 这只是一个简单的示例,实际上可以用C语言实现更复杂的游戏。通过使用条件语句、循环和随机数等基本的编程概念,开发者可以创作出各种有趣的游戏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天的大鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值