贪吃蛇实验报告

2023-11-18

贪吃蛇实验报告

第一次写博客。
这是中山大学软件工程导论的项目之一,对初学者可能有点难度,分享出来做参考。
使用的C语言。
如果你喜欢的话可以使用,就这样,直接上代码。
智能蛇部分也发上来

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//宏定义区
#define SNAKE_MAX_LENGTH 20
#define SNAKE_HEAD 'H'
#define SNAKE_BODY 'X'
#define BLANK_CELL ' '
#define SNAKE_FOOD '$'
#define WALL_CELL '*'
#define	NEXT_PLACE (map[snakePlace[0][0]+addY][snakePlace[1][0]+addX])	//下一个位置的字符
#define PLACE(X) (map[snakePlace[0][X]][snakePlace[1][X]])				//当前位置的字符

//地图
char map[12][12] = {
	"************",
	"*XXXXH     *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"*          *",
	"************"
};

//蛇的位置与长度
int snakePlace[2][SNAKE_MAX_LENGTH] = { {1,1,1,1,1},{5,4,3,2,1} };
int snakeLength = 5;

//移动与吞食,isFood==1则进行吞食
void snakeMove(int addX, int addY, int isFood);
//产生随机位置食物
void put_money(void);
//分支选择器,返回0则游戏结束,否则游戏继续
int judgeGameRun(int addX, int addY);
//显示
void output(void);
//游戏结束
void gameover(void);
//控制器
void operation(void);

int main() {
	put_money();
	output();
	operation();
	gameover();
	return 0;
}

//移动与吞食,isFood==1则进行吞食
void snakeMove(int addX, int addY, int isFood) {
	int temp1;

	//是否吞食
	if (!isFood)
		PLACE(snakeLength - 1) = ' ';
	else {
		snakeLength++;
	}

	//非头部移动与坐标变化
	PLACE(0) = SNAKE_BODY;
	for (temp1 = snakeLength - 1;temp1 > 0;temp1--) {
		snakePlace[0][temp1] = snakePlace[0][temp1 - 1];
		snakePlace[1][temp1] = snakePlace[1][temp1 - 1];
	}

	//头部移动与坐标变化
	snakePlace[0][0] += addY;
	snakePlace[1][0] += addX;
	PLACE(0) = SNAKE_HEAD;

}

//产生随机位置食物
void put_money(void) {
	int x, y;
	do {
		x = 1 + (int)(10.0*rand() / (RAND_MAX + 1.0));
		y = 1 + (int)(10.0*rand() / (RAND_MAX + 1.0));
	} while (map[y][x] != BLANK_CELL);
	map[y][x] = SNAKE_FOOD;
}

//分支选择器,返回0则游戏结束,否则游戏继续
int judgeGameRun(int addX, int addY) {
	//失败条件
	if ((NEXT_PLACE =
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

贪吃蛇实验报告 的相关文章

  • python入门教程(非常详细)

    Python是一种高级 解释性的脚本语言 其简单易学 灵活 强大等特点 使其成为了当代最流行的编程语言之一 如果您是想学习Python编程的新手 以下是详细的Python入门教程 以帮助您快速掌握Python编程基础 1 安装Python
  • STM32 基础系列教程 50 – MbedTls

    前言 mbed TLS 以前称为PolarSSL 是TLS和SSL协议的实现 并且需要相应的加密算法和支持代码 这是双重许可与Apache许可证 2 0版 与GPLv2许可也可 网站上指出 mbed TLS的目标是 易于理解 使用 集成和扩
  • 详解 C 语言中的弱符号与弱引用

    C语言中的 attribute weak 与 attribute weakref 引言 最近在看 linux 中一些驱动代码 驱动代码中为了实现程序的扩展性和兼容性用了很多 C 语言中的高级特性 本节就来谈一谈 C 语言中的弱符号和弱引用的
  • 机器学习在工程中使用要点

    机器学习现在有很多分支 大部分使用数据和模型优化入手 在此之前机器学习按照学派划分是有可靠的理论依据的 那么我们使用应该注意以下几点 1 如何获取训练集 一般我们下载现有的训练集为了学习或者来测试自己的算法泛化能力的表现水平 这时候我们对训
  • Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

    首先介绍一些乐观锁与悲观锁 悲观锁 总是假设最坏的情况 每次去拿数据的时候都认为别人会修改 所以每次在拿数据的时候都会上锁 这样别人想拿这个数据就会阻塞直到它拿到锁 传统的关系型数据库里边就用到了很多这种锁机制 比如行锁 表锁等 读锁 写锁
  • 每日站会是在浪费时间...吗?

    原文链接作者 Mark Levison 又要开站会 实在是浪费时间 打断我的工作啦 每日站会只是为ScrumMaster刷存在感而设计的 便于他微观管理 每日站会上就是汇报一下状态 而我写个邮件就行了啊 你以前听说过这些抱怨吗 我听过 不过
  • Java中获取数组长度

    Java中获取数组长度 方法 使用数组属性length来获取数组长度 代码 public class ArrayLength public static void main String args String data new Strin
  • Linux服务器之间的文件同步(单向同步:rsync+inotify)

    1 rsync简介 rsync是linux系统下的数据备份工具 支持本地复制 或者与其他SSH rsync主机同步 2 rsync的部分特性 rsync支持很多特性 可以镜像保存整个目录树和文件系统 可以很容易做到保持原来文件的权限 时间
  • APICloud(四):图片上传-Java版

    这一篇讲 将选择的图片上传到指定的服务器 说实话 这个功能写了好久 一会儿json拼的有问题访问不到后台 一会儿后台又说form表单的enctype不是multipart form data类型 各种乱七八糟的问题折腾了一下午都没好 第二天
  • 蓝桥杯---貌似化学---逆矩阵

    试题 算法训练 貌似化学 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 现在有a b c三种原料 如果他们按x y z混合 就能产生一种神奇的物品d 当然不一定只产生一份d 但a b c的最简比一定是x y z 现在给你
  • 快速识别图像的RGB值

    今天无意发现 使用QQ的文字识别功能也可以识别色彩颜色 ctrl alt o 移动鼠标指针至想要提取颜色的位置 按c键就可以复制色号了 代码里一粘贴直接就是RGB值
  • 线性自抗扰(LADRC)的stm32f1程序,实现用编码器反馈控制直流电机调速,控制器采用加了TD的LADRC

    线性自抗扰 LADRC 的stm32f1程序 实现用编码器反馈控制直流电机调速 控制器采用加了TD的LADRC 控制效果良好 h和 c分开 代码清晰有注释 有调试说明 YID 1235653714412755tbNick 9w978

随机推荐

  • 记一次 微信小程序封装请求方法

    调用 const res await requestMmsq app params 或者 request app then res gt const baby fetus res this setData baby fetus
  • vscode是什么(vscode干嘛用的)

    vscode是什么 接触VSCode不太长 但是我觉得我越来越喜欢它 所以我想写些关于它的东西 vscode 首先介绍一下这东西是什么 当然 这是由M 开发和开源的轻量级IDE 可以免费使用 我这样定义 它和VisualStudio之间的区
  • Youtube ASX Portfolio的视频笔记 What is a Quant? - Financial Quantitative Analyst

    What is a Quant Financial Quantitative Analyst YouTube youtube 上搜 option pricing 很多讲解 Stochastic Calculus的 In this video
  • RTTI简述

    RTTI的用途 RTTI的使用 dynamic cast typeid 使用总结 dynamic cast与其他转换运算符 RTTI的用途 得益于虚函数表 如果派生类实现了基类中的虚函数 通过基类指针或引用可以完成正确的函数调用 但是也不得
  • Oracle在Linux系统连接很慢的问题

    无比的兴奋 新版本的Bing支持国际版 这样就可以更好的检索国外的资料了 Oracle在Centos7中连接局域网内的速度很慢的问题 终于找到问题的原因了 当然可能还会存在其他问题 本文考虑两个 1 代理问题 ProxySelector s
  • linux mknod命令解析【转】

    转自 https blog csdn net a1010256340 article details 83088870 linux系统中设备管理的基本知识 我们的linux操作系统跟外部设备 如磁盘 光盘等 的通信都是通过设备文件进行的 应
  • linux qcom串口下载,qcom 跨平台的串口调试工具 PKGBUILD

    Id PKGBUILD 2013 06 26 GunsNRose Maintainer GunsNRose Contributor GunsNRose pkgname qcom git pkgname pkgname git pkgver
  • Vue,点击文字更换文本

    div div
  • elasticsearch简介与基本操作

    是什么等 废话后置 1 elasticsearch 分为3个部分 index mapping setting 1 1 index 相当于MySQL的表 elasticsearch 没有库的概念 也没有用户的权限区分概念 所以做好 备份 每个
  • android和harmonyos对比,HarmonyOS和Android深度对比

    HarmonyOS APP 工程结构 HarmonyOS应用发布形态为APP Pack Application Package 简称APP 它是由一个或多个HAP HarmonyOS Ability Package 包以及描述APP Pac
  • k8s Failed to create pod sandbox错误处理

    错误信息 Failed to create pod sandbox rpc error code Unknown desc failed to get sandbox image k8s gcr io pause 3 2 failed to
  • 华为机试 统计字符串中最长的数字串及统计字符串中字母出现最多的次数

    不多说 上代码 package com it thread import java util public class SoftTest public static void main String args Scanner sc new
  • 无法验证驱动程序的签名_无法安装最新版NVIDIA显卡驱动,从技术角度该怎么办?...

    一定会有众多网友 饱受无法更新NVIDIA驱动的困扰 你们一定也很奇怪 我凭实力从正规渠道购买的NVIDIA板卡 凭什么无法及时安装NVIDIA官网提供的驱动程序呢 因为无法更新到413以后的版本 一定也有众多因驱动程序 过时 而被 战地五
  • ACM-Java输入输出基本操作

    一 Java之ACM注意点 1 类名称必须采用public class Main方式命名 2 在有些OJ系统上 即便是输出的末尾多了一个 程序可能会输出错误 所以在我看来好多OJ系统做的是非常之垃圾 3 有些OJ上的题目会直接将OI上的题目
  • Framework层Android4.4锁屏流程分析

    前段时间刚接触到锁屏 我们自己做的锁屏时通过底层通过反射调过去的 所以还是得从framewoke层的启动和加载开始分析 所以画了一下这样的两个图 前面一个图是系统开机调到锁屏的一个流程 后面一个图我分开来画了 一个是按power键灭屏和亮屏
  • 【翻译】#拥抱行动和心理安全--思考根本原因而非根本人物

    本杰明 富兰克林曾经说过 生命中唯一的两个确定性是死亡和税收 但是 如果他是一名工程师 他可能会在这个名单上加上另一个 即故障 脸书的工程师们无疑会同意最近的故障 似乎是由于运行一个命令 无意中关闭了他们骨干网络的所有连接 不仅关闭了脸书
  • 【今日CV 计算机视觉论文速览 第149期】Tue, 30 Jul 2019

    今日CS CV 计算机视觉论文速览 Tue 30 Jul 2019 Totally 77 papers 上期速览 更多精彩请移步主页 Interesting MaskGAN人脸属性操作的新方法 为了克服先前方法受限于预定义的有限人脸特征操作
  • flutter 插件

    一 简介 Flutter 中调用这些能力就必须和原生平台进行通信 目前Flutter 已经支持 iOS Android Web macOS Windows Linux等众多平台 要调用特定平台 API 就需要写插件 插件是一种特殊的包 和纯
  • LeetCode234:回文链表

    题目描述 题目链接 请判断一个链表是否为回文链表 示例 1 输入 1 gt 2 输出 false 示例 2 输入 1 gt 2 gt 2 gt 1 输出 true 进阶 你能否用 O n 时间复杂度和 O 1 空间复杂度解决此题 解题思路
  • 贪吃蛇实验报告

    贪吃蛇实验报告 第一次写博客 这是中山大学软件工程导论的项目之一 对初学者可能有点难度 分享出来做参考 使用的C语言 如果你喜欢的话可以使用 就这样 直接上代码 智能蛇部分也发上来 include