| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14 人关注过本帖
标题:分享一个贪食蛇游戏,供参考
只看楼主 加入收藏
我善治鬼
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:108
专家分:181
注 册:2015-2-16
结帖率:100%
收藏
 问题点数:0 回复次数:0 
分享一个贪食蛇游戏,供参考

#include <stdio.h>
#include <windows.h>

int main()
{
    char strbuf[1000];
    int length = 1, gridSize = 20, mapW = 800, mapH = 600, lose = 0, eat;
    POINT snake[1000] = { 5, 10 }, food = { 15, 10 }, direction = { 1, 0 }, move;
    HWND hwnd = GetConsoleWindow();
    HDC dc = GetDC(hwnd);
    MoveWindow(hwnd, 100, 100, 1000, 800, FALSE);
    while (snake[0].x >= 0 && snake[0].y >= 0 && snake[0].x < mapW / gridSize && snake[0].y < mapH / gridSize && lose == 0) {
        PatBlt(dc, 0, 0, 1000, 800, WHITENESS);
        PatBlt(dc, 0, 0, mapW, mapH, BLACKNESS);
        if (GetAsyncKeyState(VK_LEFT)) (direction.x = -1, direction.y = 0);
        if (GetAsyncKeyState(VK_RIGHT)) (direction.x = 1, direction.y = 0);
        if (GetAsyncKeyState(VK_UP)) (direction.x = 0, direction.y = -1);
        if (GetAsyncKeyState(VK_DOWN)) (direction.x = 0, direction.y = 1);
        move.x = snake[0].x + direction.x;
        move.y = snake[0].y + direction.y;
        for (int i = length - 1; i >= 0; i -= 1) {
            if (snake[i].x == move.x && snake[i].y == move.y) lose = 1;
            snake[i] = (i == 0 ? move : snake[i - 1]);
            PatBlt(dc, snake[i].x * gridSize + 1, snake[i].y * gridSize + 1, gridSize - 2, gridSize - 2, WHITENESS);
        }
        if (snake[0].x == food.x && snake[0].y == food.y) {
            food.x = rand() % mapW / gridSize;
            food.y = rand() % mapH / gridSize;
            length += 1;
            eat = 1;
        }
        else eat = 0;
        PatBlt(dc, food.x * gridSize + gridSize / 4, food.y * gridSize + gridSize / 4, gridSize / 2, gridSize / 2, WHITENESS);
        TextOutA(dc, 0, 0, strbuf, sprintf_s(strbuf, "說明: 鍵盤上下左右鍵控制方向. 蛇長度: %d, 蛇頭位置X: %d, 蛇頭位置Y: %d, 食物位置X: %d, 食物位置Y: %d", length, snake[0].x, snake[0].y, food.x, food.y));
        if (eat) Beep(600, 200);
        else Beep(60, 200);
    }
    printf("吃到自己或撞墻, 遊戲失敗");
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 分享 位置 length HWND move 
5 小时前
快速回复:分享一个贪食蛇游戏,供参考
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.262298 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved