贪吃蛇游戏——C语言双向链表实现

本文详细介绍了如何利用C语言的双向链表数据结构来实现经典的贪吃蛇游戏。通过创建链表节点模拟蛇的身体,结合光标控制技术绘制游戏地图、蛇的移动以及食物的位置更新,展示了C语言在游戏开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

采用双向链表结点模拟蛇身;

使用了C语言光标控制函数打印地图、蛇和食物;

 

/**************************
***************************
	贪吃蛇游戏
	C语言数据结构
	作者:Dew
	时间:2019年3月23日
	版本:1.0
***************************
**************************/


#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <conio.h>

#define N 30
#define TRUE 1
#define FALSE 0
#define TIME 300

#define LEFT 37
#define UP 38
#define RIGHT 39
#define DOWN 40

void initMap();
void showGame();
void initSnake();
void control(int key);
void updateSnake(int next_head_x, int next_head_y);
void gotoxy(int x, int y); //光标控制
void gameRun();
void moveUp();
void moveDown();
void moveLeft();
void moveRight();
void createFood();
void addSnakeNode(int cur_tail_x, int cur_tail_y);
void crashTest(int head_x, int head_y);

struct snakeNode {
	int pos_x;
	int pos_y;
	snakeNode* pre;
	snakeNode* next;
};

struct foodNode {
	int pos_x;
	int pos_y;
};

int map[N][N];

int next_head_x, next_head_y;
int cur_tail_x, cur_tail_y;

snakeNode* snake_head = (snakeNode *)malloc(sizeof(snakeNode));
snakeNode* snake_tail = (snakeNode *)malloc(sizeof(snakeNode));

foodNode* food = (foodNode *)malloc(sizeof(foodNode));

int main()
{
	initSnake();

	initMap();

	gameRun();

	return 0;
}

void initMap()
{
	int i, j;
	for(i = 0; i < N; i++)
		for (j = 0; j < N; j++)
		{
			if (i == 0 || i == N - 1)
				map[i][j] = 1;
			else if (j == 0 || j == N - 1)
				map[i][j] = 1;
			else
				map[i][j] = 0;
		}
}

v
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值