c语言setpos函数什么意思,贪吃蛇c语言 ---实操篇

相关知识:

1.链表

2.句柄相关了解

3.简单游戏策划

简单策划篇:

一、游戏概述

贪吃蛇是一款经典的小游戏,在此贪吃蛇中,加入了彩蛋和大彩蛋,一方面提高用户的可玩性,另一方面,通过彩蛋的制作,提高了本人的代码写作能力和兴趣。

二、游戏规则

贪食蛇移动规则:↑:上移↓:无←:左移动→:右移

得分规则:吃一个食物得10分,彩蛋中吃一个加100分

获胜规则:通过前5关,后进入彩蛋关卡,达到一定分数,进入大彩蛋,游戏结束。

游戏结束规则:撞墙,通关

同时,此小游戏最终大彩蛋送给我女票,感谢让我遇见了她,遇见不一样的人生。

代码篇

//author:CO-MI

//version:4.0

//up to date:2018/7/9

//禁止转载,如需转载,请联系本人同意后即可转载

#include #include #include #include#define iX 58

#define iY 26

#define sn_len 2

#define up 8

#define left 4

#define right 6

#define down 2

#define I 20

#define R 340

typedef struct SNAKE

{

int x; ///横坐标

int y; ///纵坐标

struct SNAKE *NEXT;

} snake;

snake *Snake_Head;///蛇头

int direction; ///方向

int m,n;

int Score; ///得分

int sleeptime=250;///休眠时间

snake *SNAKE_INIT();

void main();

void SetPos(int x,int y);

void createMap();

int move();

void restart();

void egg();

void bigegg();

void createmap2();

void createfood2();

void score2();

void snake_move2();

/*

函数名:void SetPos(int x,int y)

函数功能:光标设置

参数:x,y位置坐标

返回值:无

*/

void SetPos(int x,int y) ///设置坐标

{

COORD tempCrd; ///声明变量--坐标变量

HANDLE Houtput; ///声明变量--句柄

tempCrd.X=x; ///coord position

tempCrd.Y=y; ///coord position

Houtput=GetStdHandle(STD_OUTPUT_HANDLE); ///使用GetStdHandle(STD_OUTPUT_HANDLE)来获取标准输出的句柄

SetConsoleCursorPosition(Houtput, tempCrd); ///设置光标位置

}

/*

函数名:void createMap()

函数功能:贪吃蛇地图创建

参数:无

返回值:无

*/

void createMap() ///创造地图

{

int i;

for(i=0; ix=rand()%30+5; ///设置随机生成蛇的位置

Snake_Head->y=rand()%20+5;

SetPos(Snake_Head->x,Snake_Head->y);

printf("S");

Snake_Head->NEXT=NULL;

prear=Snake_Head;

for(i=0; ix=Snake_Head->x+i+1;

temp->y=Snake_Head->y;

SetPos(temp->x,temp->y);

printf("S");

prear->NEXT=temp;

prear=temp;

}

prear->NEXT=NULL;

return Snake_Head;

}

/*

函数名:void start()

函数功能:游戏启动界面

参数:无

返回值:无

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是一个简单的贪吃蛇游戏的代码,使用C语言编写。代码中使用了Windows API的一些函数,因此只能在Windows系统下运行。 ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <windows.h> #define WIDTH 50 // 游戏画面宽度 #define HEIGHT 20 // 游戏画面高度 #define MAXLEN WIDTH*HEIGHT // 蛇的最大长度 int snake[MAXLEN][2]; // 蛇的位置数组 int food[2]; // 食物的位置 int len = 3; // 蛇的长度 int dir = 1; // 蛇头的方向,0-上,1-右,2-下,3-左 int score = 0; // 得分 void setPos(int x, int y) // 设置光标位置函数 { COORD pos = { x, y }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } void init() // 初始化函数 { srand(time(NULL)); // 初始化随机数生成器 // 初始化蛇的位置 for (int i = 0; i < len; i++) { snake[i][0] = WIDTH / 2 - i; snake[i][1] = HEIGHT / 2; } // 随机生成食物的位置 food[0] = rand() % (WIDTH - 2) + 1; food[1] = rand() % (HEIGHT - 2) + 1; } void draw() // 绘制游戏画面函数 { setPos(0, 0); printf("Score: %d\n", score); // 绘制游戏边框 for (int i = 0; i < WIDTH; i++) { printf("#"); } printf("\n"); for (int i = 1; i < HEIGHT - 1; i++) { printf("#"); for (int j = 1; j < WIDTH - 1; j++) { // 绘制蛇的身体 int flag = 0; for (int k = 0; k < len; k++) { if (snake[k][0] == j && snake[k][1] == i) { printf("O"); flag = 1; break; } } if (!flag) { // 绘制食物 if (j == food[0] && i == food[1]) { printf("@"); } else { printf(" "); } } } printf("#\n"); } for (int i = 0; i < WIDTH; i++) { printf("#"); } } void update() // 更新游戏状态函数 { // 移动蛇的身体 for (int i = len - 1; i > 0; i--) { snake[i][0] = snake[i - 1][0]; snake[i][1] = snake[i - 1][1]; } // 移动蛇头 switch (dir) { case 0: snake[0][1]--; break; case 1: snake[0][0]++; break; case 2: snake[0][1]++; break; case 3: snake[0][0]--; break; } // 判断是否吃到食物 if (snake[0][0] == food[0] && snake[0][1] == food[1]) { // 增加蛇的长度 len++; score++; // 随机生成新的食物 food[0] = rand() % (WIDTH - 2) + 1; food[1] = rand() % (HEIGHT - 2) + 1; } // 判断是否撞到墙壁或自身 if (snake[0][0] == 0 || snake[0][0] == WIDTH - 1 || snake[0][1] == 0 || snake[0][1] == HEIGHT - 1) { exit(0); // 直接退出程序 } for (int i = 1; i < len; i++) { if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1]) { exit(0); // 直接退出程序 } } } void input() // 处理用户输入函数 { if (_kbhit()) // 判断是否有按键按下 { switch (_getch()) { case 'w': if (dir != 2) // 防止掉头 { dir = 0; } break; case 'd': if (dir != 3) { dir = 1; } break; case 's': if (dir != 0) { dir = 2; } break; case 'a': if (dir != 1) { dir = 3; } break; } } } int main() { init(); // 初始化游戏状态 while (1) // 主循环 { draw(); // 绘制游戏画面 update(); // 更新游戏状态 input(); // 处理用户输入 Sleep(100); // 等待一段时间 } return 0; } ``` 这段代码实现了一个简单的贪吃蛇游戏,运行后可以通过键盘上下左右控制蛇头的移动方向,吃到食物会增加蛇的长度和得分,撞到墙壁或自身会结束游戏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值