用c语言写贪吃蛇(简易)(适用初学者)(保姆级)

文章较长,看完大约需要一个小时,初学者能够通过这个项目学习很多课余知识是很棒的
ps:后续看到本文的读者,尽量用dev c++来运行本文代码,其它几个ide笔者尝试了,确实会出现一些未知的bug,可以先尝试用dev c++ 跑出代码,再根据自己喜欢用的ide调试

目标人群

已掌握while for do…while if 等基本控制语句及数组相关知识的初学者

前言

  1. 本文意在增加刚入门 c语言的朋友的兴趣,目标是让读者朋友能感受到编码的乐趣,最后能自己独立写出此代码,并自行不断优化、完善。

  2. 本文会涉及到较多对于初学者较陌生的知识,希望大家不要产生畏难心理,笔者为了文章的流畅性会简单介绍,想深入了解的朋友可以点击文中对应篮字。

       接下来让我们看看代码的全景(笔者ide用的是devC++5.11,用vscode的朋友在学习完本文,记得看一下评论)
    

代码

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
 
#define High 20   //游戏画面尺寸 以向下为x的正半轴,向右为Y的正半轴 
#define Width 30
 
//全局变量
int moveDirection;  //小蛇移动位置 ,上下左右分别用1,2,3,4表示 
int food_x,food_y;  //食物的位置 
int canvas[High][Width]={
   0};//二维数组存储游戏画布中对应元素 


//该函数是用于控制 控制台的光标的移动
void gotoxy(int x,int y)
{
   	
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);	//调用
	COORD pos;			//定义一个坐标
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(handle,pos);
} 

//该函数是为了蛇的正常运动以及保证食物的持续出现
void moveSankeByDirection()
{
   
	int i,j;
	for(i=1;i<High-1;i++)
	{
   
		for(j=1;j<Width-1;j++)
		{
   
			if(canvas[i][j]>0)
				canvas[i][j]++;
		}
	}
	
	int oldTail_i,oldTail_j,oldHead_i,oldHead_j;
	int max=0;
	
	for(i=1;i<High-1;i++)
	{
   
		for(j=1;j<Width-1;j++)
		{
   
			if(canvas[i][j]>0)
			{
   
				if(max<canvas[i][j])
				{
   
					max=canvas[i][j];
					oldTail_i=i;
					oldTail_j=j;
				}
				if
### 回答1: 贪吃蛇游戏需要掌握一些基本的图形绘制和控制语句,以及记录蛇的位置和方向。这里给出一个简单的示例代码: ``` #include <stdio.h> #include <conio.h> #include <Windows.h> #define HEIGHT 20 #define WIDTH 40 #define SNAKE_LENGTH 5 void gotoxy(int x, int y) { COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } void hidecursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } int main() { int x[100], y[100]; int foodx, foody; int i, j, direction = 3; int flag = 1; char key; //初始化蛇的位置 for (i = 0; i < SNAKE_LENGTH; i++) { x[i] = WIDTH / 2 + i; y[i] = HEIGHT / 2; } //随机生成食物位置 foodx = rand() % WIDTH; foody = rand() % HEIGHT; while (flag) { //清屏 system("cls"); //画边框 for (i = 0; i <= WIDTH + 1; i++) { gotoxy(i, 0); printf("-"); gotoxy(i, HEIGHT + 1); printf("-"); } for (i = 1; i <= HEIGHT; i++) { gotoxy(0, i); printf("|"); gotoxy(WIDTH + 1, i); printf("|"); } //画食物 gotoxy(foodx + 1, foody + 1); printf("o"); //画蛇 for (i = SNAKE_LENGTH - 1; i >= 1; i--) { x[i] = x[i - 1]; y[i] = y[i - 1]; } switch (direction) { case 0: y[0]--; break; case 1: x[0]++; break; case 2: y[0]++; break; case 3: x[0]--; break; } //判断是 ### 回答2: 贪吃蛇是一款经典的游戏,它可以通过C语言。在C语言中,我们可以使用图形库(如graphics.h)来创建游戏界面。 首先,我们需要创建一个窗口来显示游戏界面。我们可以使用graphics.h中的一些函数来创建窗口,并设置它的大小和标题。 接下来,我们需要定义贪吃蛇的结构体,包括它的位置、长度、蛇身的形状和颜色等信息。我们还需要定义食物的坐标和颜色。 然后,我们需要使用循环来不断更新游戏界面。在每次循环中,我们需要检测玩家的输入,包括上、下、左、右四个方向的移动以及退出游戏。根据玩家的输入,我们可以更新贪吃蛇的位置和长度。 当贪吃蛇吃到食物时,它的长度会增加一个单位,并且食物会在随机的位置重新生成。我们可以使用随机数生成器来实现这一功能。 在每次循环中,我们还需要检测贪吃蛇是否撞到墙壁或自己的身体。如果撞到墙壁或自己的身体,游戏就会结束,我们可以在屏幕上显示游戏结束的提示信息。 最后,当玩家退出游戏时,我们需要清理并关闭窗口。 通过以上步骤,我们就可以使用C语言一个简单贪吃蛇游戏。当然,还可以进一步优化游戏界面的设计,添加计分系统和难度调整功能等,使游戏更加有趣和挑战。
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值