当前位置: 首页 > news >正文

贪吃蛇游戏的制作记录

关于蛇的实现代码

#include "snake.h"
#include "globalvar.h"
#include <graphics.h>

int fangXiang = 1;//方向 0 右 1 上 2 左 3 下
int snakeHang[100] = { 10,11,12,13,14 };//蛇 每节所在行
int snakeLie[100] = { 10,10,10,10,10 };//蛇 每节所在列
int snakeLength = 5;//当前的长度

IMAGE imgHead[4];
IMAGE imgBody;

void snakeMove()
{
    //身体爬行
    for (int j = snakeLength - 1; j >= 1; j--)
    {
        snakeHang[j] = snakeHang[j - 1];
        snakeLie[j] = snakeLie[j - 1];
    }

    //头爬行
    switch (fangXiang)
    {
    case 0:
        snakeLie[0]++;//右
        break;
    case 1:
        snakeHang[0]--;//上
        break;
    case 2:
        snakeLie[0]--;//左
        break;
    case 3:
        snakeHang[0]++;//下
        break;
    }
}


int enabledEat()
{
    return  snakeHang[0] == appleHang && snakeLie[0] == appleLie;
}

void snakeGrow()
{
    snakeLength++;
}


int enabledOver()
{
    return snakeHang[0] == 0 || snakeHang[0] == 19 || snakeLie[0] == 0 || snakeLie[0] == 19;
}


int enabledEatSelf()
{
    //状态思维:
    int yes = 0;
    //检查
    for (int i = 1; i < snakeLength; i++)
    {
        if (snakeHang[0] == snakeHang[i] && snakeLie[0] == snakeLie[i])
        {
            yes = 1;
            break;
        }
    }
    return yes;
}

void snakeDown()
{
    if (fangXiang != 1)
    {
        fangXiang = 3;
    }
}

void snakeUp()
{
    fangXiang = 1;
}

void snakeRight()
{
    fangXiang = 0;
}

void snakeLeft()
{
    fangXiang = 2;
}

void snakegraph()
{
    putimage(snakeLie[0] * 30, snakeHang[0] * 30, &imgHead[fangXiang]);
    for (int j = 1; j < snakeLength; j++)
    {
        putimage(snakeLie[j] * 30, snakeHang[j] * 30, &imgBody);
    }
}

void snakegraphHead()
{
    TCHAR str[100];
    for (int i = 0; i < 4; i++)
    {
        _stprintf(str, L".\\she\\head%d.bmp", i);
        loadimage(&imgHead[i], str);
    }
    loadimage(&imgBody, L".\\she\\body.bmp");
}

http://www.lryc.cn/news/90975.html

相关文章:

  • Go基础入门
  • JavaScript教程(二)
  • 设计模式之代理模式
  • 初识MySQL
  • 内网渗透(八十五)之ADCS证书服务攻击
  • 通过python封装1688图片搜索商品数据接口,拍立淘API接口
  • HashMap的源码分析(基于JDK1.8)
  • 算法能力-数据安全复合治理框架和模型解读(5)
  • java从入门到起飞——基础概念
  • C语言判断队列满or空
  • 系统中级集成项目管理工程师(中项)好考吗?
  • 【Java多线程进阶】CAS机制
  • flex布局总结
  • 2023 Idea 热部署 JRebel 插件激活方法
  • Java (韩老师课程)第三章
  • 【P38】JMeter 随机控制器(Random Controller)
  • API电商 ERP 数据管理
  • 【SQLAlchemy】第四篇——事务
  • 浅谈QMap中erase与remove的区别
  • FastThreadLocal 原理解析
  • 设计模式B站学习(一)(java)
  • Pandas如何轻松按位置删除多重索引列?
  • 第五十七天学习记录:C语言进阶:结构体链表的自学
  • 【一次调频】考虑储能电池参与一次调频技术经济模型的容量配置方法(Matlab代码实现)
  • ICV报告: 智能座舱SoC全球市场规模预计2025年突破50亿美元
  • 在can协议的基础下编写DBC文件,然后使用该DBC文件下发can协议到底盘完整流程
  • 工业传感器有哪些?
  • Docker应用部署之Nginx
  • TerminalWorks TSPrint/TSScan/TSWebCam Crack
  • 如何使用Springboot实现文件上传和下载,并为其添加实时进度条的功能