天道酬勤,学无止境

贪吃蛇游戏的制作

liunx系统下用c语言做的贪吃蛇游戏

我在学习c语言编程之后,对于链表和结构体的用法还不太清楚,因而通过来制作这样一个小游戏来加强自己对这两个知识点的应用,同时,因为c语言的一些缺陷,所以我们还得用上ncurses的图形界面库,并使用liunx系统编程中的线程来进行编程,废话不多说,上源码。

#include<stdio.h>
#include<curses.h>
#include<stdlib.h>
#include<pthread.h>
#define UP     1 
#define DOWN  -1
#define LEFT   2
#define RIGHT -2 

struct snake
{
	int hang;
	int lie;
	struct snake *next;
};

struct snake *head=NULL;

struct snake *tail=NULL;

int key;

int dir;

struct snake food;

void initfood()
{
	int x=rand()%21;
	int y=rand()%21;
	food.hang=x;
	food.lie=y;
}

void addnode()
{
	struct snake *new;
	new=(struct snake *)malloc(sizeof(struct snake));
	new->hang=tail->hang;
	new->lie=tail->lie+1;
	new->next=NULL;
	switch(dir){
		case UP:
			new->hang=tail->hang-1;
			new->lie=tail->lie;
			break;
		case DOWN:
			new->hang=tail->hang+1;
			new->lie=tail->lie;
			break;
		case LEFT:
			new->hang=tail->hang;
			new->lie=tail->lie-1;
			break;
		case RIGHT:
			new->hang=tail->hang;
			new->lie=tail->lie+1;
			break;
		}
	tail->next=new;
	tail=new;
}

void initsnake()
{
	struct snake *p=(struct snake *)malloc(sizeof(struct snake));
	dir=RIGHT;
	while(head!=NULL){
		p=head;
		head=head->next;
		free(p);
		}
	head=(struct snake *)malloc(sizeof(struct snake));
	tail=(struct snake *)malloc(sizeof(struct snake));
	head->hang=1;
	head->lie=1;
	head->next=NULL;
	tail=head;
	initfood();
	addnode();
	addnode();
	addnode();
}

void deletenode()
{
	struct snake *p=(struct snake*)malloc(sizeof(struct snake));
	p=head;
	head=head->next;
	free(p);
}

int judge3()
{
	struct snake *p;
	p=head;
	if(tail->hang<0||tail->lie==0||tail->hang==20||tail->lie==20){
		return 1;
		}
	while(p->next!=	NULL){
		if(p->hang==tail->hang&&p->lie==tail->lie){
			return 1;
			}
		p=p->next;
		}
	return 0;
}

void movesnake()
{
	addnode();
	if(judge2(tail->hang,tail->lie)){
		initfood();
		}else{
	deletenode();
		}
	if(judge3()){
		initsnake();
		}
	
}

void turn(int direction)
{
	if(abs(dir)!=abs(direction)){
		dir=direction;
		}
}

void* changeDir()
{
	while(1){
		key=getch();
		switch(key){
			case KEY_DOWN:
				turn(DOWN);
				break;
			case KEY_UP:
				turn(UP);
				break;
			case KEY_LEFT:
				turn(LEFT);
				break;
			case KEY_RIGHT:
				turn(RIGHT);
				break;
		}		
	}
}

int judge2(int i,int j)
{
	if(food.hang==i&&food.lie==j){
		return 1;
		}else{
	return 0;
		}
}

int judge(int a,int b)
{
	struct snake *p;
	p=(struct snake*)malloc(sizeof(struct snake));
	p=head;
	while(p!=NULL){
		if(p->hang==a&&p->lie==b){
			return 1;
			}
		p=p->next;
	}	
	return 0;
}

void initNcurse()
{
	initscr();
	keypad(stdscr,1);
	noecho();
}

void gameCreat()
{
	int hang;
	int lie;
	move(0,0);
	for(hang=0;hang<20;hang++){
		if(hang==0){
			for(lie=0;lie<20;lie++){
				printw("--");
				}
			printw("\n");
			}
		if(hang>=0 && hang<=19){
			for(lie=0;lie<=20;lie++){
				if(lie==0 || lie==20){
				printw("|");
				}else if(judge(hang,lie)){
					printw("[]");
						}else if(judge2(hang,lie)){
						printw("##");
						}
						else{
						printw("  ");  
							}
			}
			printw("\n");
		}
		if(hang==19){
			for(lie=0;lie<20;lie++){
				printw("--");
				}
			printw("\n");
			printw("by the jiangwencai");
		}
	}
}

void* refreshInterface()
{
	while(1){
		movesnake();
		gameCreat();
		refresh();
		usleep(150000);
	}	
}

int main()
{
	pthread_t t1;

	pthread_t t2;	

	initNcurse();

	initsnake();

	gameCreat();

	pthread_create(&t1,NULL,refreshInterface,NULL);

	pthread_create(&t2,NULL,changeDir,NULL);

	while(1);

	getch();

	endwin();
	
	return 0;
}

主要应用的是链表和结构体,当然像c语言的基础例如函数调用就不在赘述了,当然这里引入了线程的概念,这是为了实现两个while(1)循环同时运行而采用,另外还应用了ncurses库相关的打印函数,因为这个图形库的输入输出函数要比c标准库的函数好用,不用按回车就能响应,从而提高游戏的可玩性,现在能给大家看看编译时和运行成功后的样子。

编译时:gcc f.c -lncurse -lpthread(一定要链上ncurses和线程的库不然编译时会报错,因为有些函数编译器会不认识)

运行程序后的界面:
在这里插入图片描述
因为截图不能体现动态,大家可以自行运行体验游戏。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 贪吃蛇的使命之零基础入门贪吃蛇游戏(附演示地址)
    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白公众号: 【C you again 】,分享计算机类毕业设计源码、IT技术文章、游戏源码、网页模板、程序人生等等。公众号回复 【粉丝】进博主技术群,与大佬交流,领取干货学习资料关于转载:欢迎转载博主文章,转载时表明出处求赞环节:创作不易,记得 点赞+评论+转发 谢谢你一路支持零基础入门贪吃蛇游戏贪吃蛇是一款最常见、最经典、最受欢迎的小游戏之一。本篇文章带你零基础实现贪吃蛇游戏,一条蛇的使命从这里开始。演示地址:贪吃蛇演示,可能会提示危险操作,请忽略,放心访问。 源码获取:公众号:C you again ,回复“贪吃蛇”免费获取1、游戏描述贪吃蛇是一款非常经典的休闲类游戏。在一块固定大小的区域内,游戏玩家通过控制贪吃蛇的移动去吃食物,吃到食物的蛇身体变长。食物被蛇吃到后立马消失,并再次随机产生。蛇撞到四周墙壁或者自己身体时死亡。2、前期准备2.1 具备技能本游戏所说是零基础,但你具备以下技能最佳: 1、 HTML(主要是div盒子模型,canvas画布) 2、CSS (为你好看的游戏界面做准备) 3、JavaScript (让小蛇动起来,逻辑代码实现)2.2 开发工具为提高开发速率,选择一款优秀的开发工具也很重要,这里小编推荐 sublime text3,轻巧方便,可以去百度下载,也可以关注小编公众号“C
  • 贪吃蛇的使命 | 零基础入门贪吃蛇游戏(附源码、演示地址)
    零基础入门贪吃蛇游戏 贪吃蛇是一款最常见、最经典、最受欢迎的小游戏之一。本篇文章带你零基础实现贪吃蛇游戏,一条蛇的使命从这里开始。 演示地址:https://cca1a4.coding-pages.com/,可能会提示危险操作,请忽略,放心访问。 源码获取:公众号:C you again ,回复“贪吃蛇”免费获取 1、游戏描述 贪吃蛇是一款非常经典的休闲类游戏。在一块固定大小的区域内,游戏玩家通过控制贪吃蛇的移动去吃食物,吃到食物的蛇身体变长。食物被蛇吃到后立马消失,并再次随机产生。蛇撞到四周墙壁或者自己身体时死亡。 2、前期准备 2.1 具备技能 本游戏所说是零基础,但你具备以下技能最佳:1、 HTML(主要是div盒子模型,canvas画布)2、CSS (为你好看的游戏界面做准备)3、JavaScript (让小蛇动起来,逻辑代码实现) 2.2 开发工具 为提高开发速率,选择一款优秀的开发工具也很重要,这里小编推荐 sublime text3,轻巧方便,可以去百度下载,也可以关注小编公众号“C you again”,私信获取破解中文版。当然你足够优秀,使用记事本小编也不拦着。 3、实现目标 本篇文章欲带你实现以下功能1、基本贪吃蛇(蛇的移动,吃食物,产生食物,增加分数)2、增加 暂停游戏/继续游戏功能3、再来一局功能(贪吃蛇死亡后有再来一局提示) 4、按键约定 为方便玩家游戏
  • 新手用Python通过Pygame一步步实现贪吃蛇
    我是一个Python的newer,这几天一直在学习Python,昨天在CSDN看到了一篇关于用pygame写贪吃蛇游戏的代码,名字叫《一步步教你怎么用Python写贪吃蛇游戏》 ,文章写得很清晰,游戏的大概原理和关于pygame的使用方法也都做了详细的说明,但是由于代码顺序比较乱,如果按照文章的顺序一步步敲代码出来,会马上闪退。 本来也是学习,所以我自己修改了一下,发上来供像我这样的新手研究学习。 第一步,先导入需要的模块,初始化Pygame。代码里的注释都比较清楚了,我就不再赘述。 # 导入需要用到的模块 import pygame, sys, random, time # 从pygame模块导入常用的函数和常量 from pygame.locals import * # 初始化Pygame库pygame.init() pygame.init() # 初始化一个游戏界面窗口 DISPLAY = pygame.display.set_mode((640, 480)) # 设置游戏窗口的标题 pygame.display.set_caption('Python贪吃蛇') # 定义一个变量来控制游戏速度 FPSCLOCK = pygame.time.Clock() # 初始化游戏界面内使用的字体,及字体大小 BASICFONT = pygame.font.SysFont("SIMYOU
  • 贪吃蛇——Linux环境下,基于Ncurse图形库的c语言的小游戏
    1.一些关于ncurse的知识 (1)使用ncurses原因:按键响应速度快 (2)一些ncurse函数: initscr();//ncurse界面初始化函数 printw();//在ncurse模式下的printf getch();//等待用户输入,如果没有这句话程序就退出了,看不到运行结果 endwin();//程序退出,调用函数来恢复shell终端的显示,如果没有这句话,shell终端会字乱码,坏掉 keypad();//设置了可以从stdscr接收键盘的功能键(快捷键) //使用keypad(stdtcr,1); move();//改变光标的位置 //使用move(1,1); refresh();//刷新 noecho();//不要把功能键的信息打印出来 2.制作贪吃蛇的思路 (1)地图规划 大小20*20 地图竖直方向上的边界"|" 地图水平方向上的边界"--" 贪吃蛇的身子"[]" 食物"##" (2)蛇的身子的初始化(链表) (3)蛇向右移动(链表的添加,删除) (4)蛇碰到边界,重新开始(初始化蛇) (5)引入线程(方向改变和刷新界面) (6)蛇四方向的移动(要解决不合理走位) (7)蛇吃食物(食物的随机,链表的增加) (8)贪吃蛇的头碰到身子(注意链表的头结点) 3.代码实现: #include <curses.h> #include <stdlib.h>
  • 我学了C/C++,怎样才能做出一个像样的游戏,比如贪吃蛇?
    我学了C/C++,怎样才能做出一个像样的游戏,比如贪吃蛇? 1。引子 之前写过一个用C/C++做贪吃蛇的blog,很多同学都对此颇有兴趣,而我知道他们感兴趣的原因是,他们遇到了好多问题也问了我好多问题。为什么他们会遇到这么多麻烦?问题出在哪呢?这些凑成了写这篇blog的初衷。 “给出的代码看不懂!”,这是问我最多的问题,没错,能渴求谁在开始学着写自己游戏的时候就会用DirectX的代码?哎!我只学了一些基本语法,会自己定义’贪吃蛇‘这种类型,我猜这种类型会有’生长身体’,‘拐弯’等等的函数,其它什么COM、API的我一概不知,但是我想写自己的游戏,想把我偶然的一个游戏点子付诸实践,难到成不了编程大师之前便写不出游戏了吗(才怪)? 来吧,下面让我们试着打破这个悖论。 2。打算怎样做? 最重要的一点,我们想做出像样一点的游戏,它不能是DOS那个黑框,然后伴着一些字符的闪烁。 要用C/C++语言来写,因为入门编程我就学的它俩,即使没学C++,我也能看个大概,而且我喜欢用它们。 能把我的游戏点子运行起来。 为了摆脱DOS(也叫控制台),我们需要一个窗口,那种Windows窗口,那需要写Win32的代码吗?不能,这样违反了第地二条,因为我没怎么接触过Windows程序设计(也叫VC++)。 C/C++是出了名的‘小气’,标准库的头文件屈指可数,要不用python吧
  • Canvas实现贪吃蛇小游戏(面向对象)
    Canvas实现贪吃蛇小游戏 我们常常在网页上制作的小游戏都是通过Canvas实现的,虽然我们也可以使用DOM来实现,但是这样会更加的节约资源。 我们书写这个小游戏的目的主要是为了适应js中关于面向对象的设计模式,由于js的面向对象有些特殊所以更加应该引起我们的注意。 其实网上已经有很多关于贪吃蛇这样小游戏的教学,每个人都有每个人的实现方法,也都有所不同,在这其中最需要学习的是面向对象的思维方式,那么下面我直接讲代码粘贴在下面,代码之中有很多注解能够帮助大家理解一些细节的地方。 简单的讲一下代码的思路:因为是对canvas画图小游戏的实现所以我们将最大最外层的构造函数取名为Draw,Drew中接收一个参数是dom的canvas元素,Drew包含两个私有方法是check和main,check主要用于判断用于运行的浏览器是否支持Canvas,main里面主要用于调用其他所有的方法。 我们创建一个用于画图的一个构造函数Rect,并给Rect设置一个公有方法drew用于绘画,创建另一个构造函数snack创建对象画出蛇头和蛇身,创建一个randFood用于随机创建出食物,当然还有很多的关于蛇对象snake的很多公有方法,例如是否吃到食物和方向等。 其实下面的方法还有很多没有完善的地方,有些方法没有加入到构造函数里面,还有一些缺陷,大家借鉴的时候可以稍作修改。
  • Easyx小游戏制作教程
    来源:微信公众号「编程学习基地」 2021年的第一篇文章,带你看清王者荣耀 文章目录 1.推箱子2. 益智小游戏拼图制作3.经典小游戏Easyx制作酷炫贪吃蛇4. 回味童年经典项目----扫雷实现5.C++面向对象编程之 flappyBird 程序设计6.超级无敌回味经典 + 巩固编程知识项目 俄罗斯方块7. 链表学习之 雷霆战机 项目8.思维练习最强项目之 连连看9. 又是一个经典 五子棋项目10.迷宫小游戏 环境:win10 + VS2015 + Easyx图形库(界面) 代码行数在1000以内,逻辑思维很强,适合大一新生练手,强力推荐。 1.推箱子 2. 益智小游戏拼图制作 3.经典小游戏Easyx制作酷炫贪吃蛇 4. 回味童年经典项目----扫雷实现 5.C++面向对象编程之 flappyBird 程序设计 6.超级无敌回味经典 + 巩固编程知识项目 俄罗斯方块 7. 链表学习之 雷霆战机 项目 8.思维练习最强项目之 连连看 9. 又是一个经典 五子棋项目 10.迷宫小游戏 项目来自专栏C/C++小项目 Easyx小游戏制作 ​ 期待你的关注~持续更新 来源:https://blog.csdn.net/qq_44519484/article/details/112164898
  • Python一行代码就能玩童年的游戏
    Python一行代码就能玩童年的游戏 大家好,今天就分享一个私藏的GitHub项目——free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装当然也很简单一行代码就可以 由于该项目中的所有游戏均是基于Python内置模块Turtle制作,所以没有太多依赖,安装不会有困难。 安装完之后我们可以使用python -m freegames list来查看所有的游戏列表 贪吃蛇 现在我们可以使用一行代码启动相关游戏,比如贪吃蛇snake 贪吃蛇的玩法想必不用过多解释了,使用键盘⬆️⬇️⬅️➡️即可操控 吃豆人 吃豆人没玩过也应该听过,使用下面的代码可以启动一个类似吃豆人的游戏 Flappy Flappy这个游戏和之前非常火的Flappy bird十分类似 只需要更换游戏名即可启动 这次需要不断点击鼠标来控制绿色小圆点飞行,实测比flappy bird难度要更高一点 Memory Memory翻译过来是记忆,该游戏给出一些宫格,点击每一个小宫格会显示背后藏的数字,但会快速消失,当你成功选中两个相同的数字之后就会显示为拼图,可玩性还是很高的。 迷宫 这个游戏应该就不用介绍了,找出走出迷宫对应的路径即可。 Tic Tac Toe 这个游戏我打赌你一定玩过,单击屏幕即可放置一个X或O,当三个同样的图案在一条直线上就赢了。 还有更多的游戏这里就不再一一介绍
  • 童年的游戏,Python一行代码就能玩
    大家好,儿童节就要来了,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一个私藏的GitHub项目——free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装与使用 安装当然也很简单一行代码就可以 pip install freegames 由于该项目中的所有游戏均是基于Python内置模块Turtle制作,所以没有太多依赖,安装不会有困难。 安装完之后我们可以使用python -m freegames list来查看所有的游戏列表 贪吃蛇 现在我们可以使用一行代码启动相关游戏,比如贪吃蛇snake python -m freegames.snake 贪吃蛇的玩法想必不用过多解释了,使用键盘⬆️⬇️⬅️➡️即可操控 吃豆人 吃豆人没玩过也应该听过,使用下面的代码可以启动一个类似吃豆人的游戏 python -m freegames.pacman Flappy Flappy这个游戏和之前非常火的Flappy bird十分类似 只需要更换游戏名即可启动 python -m freegames.flappy 这次需要不断点击鼠标来控制绿色小圆点飞行,实测比flappy bird难度要更高一点 Memory Memory翻译过来是记忆,该游戏给出一些宫格,点击每一个小宫格会显示背后藏的数字,但会快速消失
  • C语言——在Linux环境下基于Ncurse 实现贪吃蛇小游戏(二)地图规划及编程实现
    地图规划 地图大小:20*20 地图竖直方向边界:| 地图水平方向边界:– 贪吃蛇身子:[] 贪吃蛇食物:## 效果图: 地图的编程实现 #include <curses.h> //初始化Ncurse函数 void initNcurse() { initscr(); keypad(stdscr,1); } //界面打印函数 void gamePic() { int hang; int lie; for(hang = 0; hang <= 20; hang++) { //首行和尾行打印 if(hang == 0 || hang == 20) { for(lie = 0; lie < 20; lie++) { printw("--"); } printw("\n"); } //中间行打印 if(hang >= 0 && hang <= 19) { for(lie = 0; lie <= 20; lie++) { if(lie == 0 || lie == 20) { printw("|"); }else{ printw(" "); } } printw("\n"); } } printw("By God!!!!\n"); } int main() { //函数调用 initNcurse(); gamePic(); getch(); endwin(); return 0; }
  • MSP430 F5529 单片机 OLED 贪吃蛇 游戏
    做了一块MSP430 F5529转接板看起来漂亮一点,没有就直接用杜邦线接线。 https://blog.csdn.net/x1131230123/article/details/108772807 Snake game. Each time the snake eats a piece of food, its tail grows longer, making the game increasingly difficult. The user controls the direction of the snake’s head (up, down, left, or right), and the snake’s body follows. Food is randomly generated, and if the snake hits a wall or its own tail, the game ends. Keep score by how many turns or how much time the snake is alive。 1、 贪吃蛇游戏 OLED 功能:贪吃蛇游戏;可以上下左右;计算分数;20分一个档次提升贪吃蛇速度; 2、 最终效果: 3、 硬件:OLED和4个按键 OLED接线 // | P3.1|<- Data In (UCB0SOMI) //
  • 嵌入式设计——ARMSIM#环境虚拟外设控制-键盘控制贪吃蛇
    一、实验目的 学习ARMSIM#环境下虚拟开发板的控制。 编写简单程序调用软件中断服务程序实现虚拟OLED显示器的键盘控制。 二、实验要求 编写程序SNAKE.s实现以下功能。 基本行为:在16×40的EmbestBoard显示器上显示可变长度的字母序列蛇,在没有按键的时候,蛇保持向当前方向前进。蛇的构成字母可自选。 蛇的死亡:触碰到边界时,游戏结束。 控制:使用蓝色键盘的四个键表示Up、Down、Left和Right键,表示蛇要改变的方向。为简化问题,允许蛇穿过自身。 生长:在蛇安全的显示了若干周期后,蛇的长度增加1。 在以上基础上可增加功能,可以向真实“贪吃蛇”游戏靠拢。 三、补充功能说明 1.区分游戏难度的关卡通关功能 起始局为第0局(ROUND 0),用移动的次数代表时间,每经过40次移动,还未触碰边界失败的,可以进入第1局游戏。第1局游戏的边界范围设置将小于第0局,同样第2局也比第1局边界范围缩小,这样达到游戏难度区分的目的。当3局游戏均通过后,显示通关。局数和游戏时间均可在屏幕上实时显示,如下图分别为第一、二、三局的界面: 来源:https://blog.csdn.net/strivequeen/article/details/115266651
  • 童年的游戏,Python一行代码就能玩
    大家好,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一个私藏的GitHub项目——free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装与使用 安装当然也很简单一行代码就可以 由于该项目中的所有游戏均是基于Python内置模块Turtle制作,所以没有太多依赖,安装不会有困难。 安装完之后我们可以使用python -m freegames list来查看所有的游戏列表 贪吃蛇 现在我们可以使用一行代码启动相关游戏,比如贪吃蛇snake 贪吃蛇的玩法想必不用过多解释了,使用键盘⬆️⬇️⬅️➡️即可操控 吃豆人 吃豆人没玩过也应该听过,使用下面的代码可以启动一个类似吃豆人的游戏 Flappy Flappy这个游戏和之前非常火的Flappy bird十分类似 只需要更换游戏名即可启动 这次需要不断点击鼠标来控制绿色小圆点飞行,实测比flappy bird难度要更高一点 Memory Memory翻译过来是记忆,该游戏给出一些宫格,点击每一个小宫格会显示背后藏的数字,但会快速消失,当你成功选中两个相同的数字之后就会显示为拼图,可玩性还是很高的。 迷宫 这个游戏应该就不用介绍了,找出走出迷宫对应的路径即可。 Tic Tac Toe 这个游戏我打赌你一定玩过,单击屏幕即可放置一个X或O,当三个同样的图案在一条直线上就赢了。 查看源码
  • 贪吃蛇(一)--用C++编写一个简单的贪吃蛇
    这里简单介绍怎么用C++编写一个简单的黑白框的贪吃蛇游戏,复杂的加了可视化界面程序点击这里贪吃蛇(二)–easyX图形库进行可视化界面制作。 首先分析在黑白框中的贪吃蛇需要哪些功能: (1)需要能在界面指定位置(x,y)直接输出对应内容 (2)需要动态数组储存蛇的身体节点 (3)需要能接收键盘指令对贪吃蛇运动方向进行调整 (4)需要随机生成食物 (5)判断蛇是否撞到墙或者自己的身体 基本满足这些功能就可以实现一个简单的贪吃蛇,但是为了游戏的稳定性我们需要尽可能考虑详细,避免程序出bug。现在依次对这5个功能进行实现。 1.在界面指定位置(x,y)输出对应内容 这里直接引用C语言本身存在的一个操作台函数,代码如下: #include<iostream> #include<windows.h> using namespace std; //在指定位置显示内容 void gotoxy(int x,int y,char c) { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; //variablendklaration HANDLE hConsoleOut; hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo)
  • C/C++编程——实现仿贪吃蛇大作战游戏,堪称游戏界最简版,有源码!
    C++双人游戏,通过控制方向键盘来控制橙色(W上、S下、A左、D右)和蓝色光车(方向键盘),触壁或者碰到自己或者对手的轨迹者输。 实现界面如下: 项目结构展示: 部分源码展示: 操作上来说类似于贪吃蛇,只不过贪吃蛇是碰壁或者碰到自己就输,这个游戏是触壁或者碰到自己或者对手的轨迹者输。 最后,如果你在学习C/C++的过程中遇到了问题,可以提问哦~ 声明:本文内容来源于网络,如有侵权请联系删除 来源:https://blog.csdn.net/weixin_45287871/article/details/103783838
  • 基于Qt库的C++贪吃蛇「源码+说明文档」适合学C/C++零基础学习
    基于Qt库的C++贪吃蛇游戏源码,每个蛇节点画出来的宽度与高度, 蛇节点坐标更新, 每个节点都装前一节点的坐标,从最后的一个节点开始。通过这个代码您可了解下这种游戏编写的相关技巧,比如:蛇初始长度的设置,初始化蛇,初始食物的坐标,检查蛇是否越界碰到食物,创建新食物点, 不能与蛇头和蛇身节点重叠,设置蛇头的坐标,检查x、y轴坐标是否越界、检查蛇头是否会撞蛇身等。 先分析一下游戏的数据结构: 1.游戏地图用一个数组bk[20][20]存储,有四种状态。0表示没东西;1表示墙;2表示果实;3表示蛇。 2.用xy[2]来存放蛇前进的坐标,xy[0]表示横坐标,xy[1]表示纵坐标。。 3.move[20][20]表示蛇的运动轨迹。也是在和地图一样的格子上,其中move[0][0]记录当前的步数.这个主要是用来刷新蛇使用。 3.look[4]用来记录游戏的各种数据,look[0]为朝向,look[1]为蛇的长度,look[2]为失败判定,look[3]为分数 源码展示: 源码就展示到这儿了,每天会分享C/C++项目实战,希望大家学有所成哦! 来源:https://blog.csdn.net/weixin_41986518/article/details/103644800
  • 基于ncurse的贪吃蛇游戏
    #include<curses.h> //使用ncurse #include<stdlib.h> #include<pthread.h> //使用多线程 #include<stdio.h> #define UP 1 #define DOWN -1 #define LEFT 2 #define RIGHT -2 struct snake //创建蛇身链表 { int hang; int lie; struct snake *next; }; struct snake food; struct snake *head=NULL; struct snake *tall=NULL; int dir; int key; void initfood() //食物初始化 { int x=rand()%20; int y=rand()%21; struct snake *p=head; while(p!=NULL){ if(p->hang==x&&p->lie==y){ x=rand()%20; y=rand()%21; p=head; continue; } p=p->next; } food.hang=x; while(y==0){ y=rand()%21; } food.lie=y; } int hassnakenode(int i,int j) //判断地图中该位置是否有蛇身 {
  • 不到 150 行代码写一个 Python 版的贪吃蛇
    文 | 豆豆来源:Python 技术「ID: pythonall」相信大家小时候应该都玩过贪吃蛇这个游戏吧,反正我小时候超喜欢玩,没其他原因,因为家里的手机上只有这一个游戏可以消磨时光。后来随着移动互联网的普及,智能手机逐渐取代了诺基亚,但这款游戏的确堪称经典之作。今天我们就用 pygame 来自己写一个贪吃蛇出来,重温经典。先来看看我们最终实现的效果。安装使用 pygame 之前需要先安装,直接使用 pip 安装即可。pip install pygame使用之前需要先将相应模块引入我们的程序。import pygame, sysfrom pygame.locals import *Hello World一般大家学习新的编程语言时写的第一个程序基本都是 Hello World,那么我们今天的入门 demo 就是用 pygame 在屏幕上输出 Hello World。在使用 pygame 之前需要将其初始化,然后在新建一个游戏窗口,用于和用户交互。# 初始化pygame.init()# 新建窗口screen = pygame.display.set_mode((640, 480))接下来我就就需要设置要输出的字体了。# 设置窗口标题pygame.display.set_caption("Hello World")# 设置字体font = pygame.font.Font(None
  • [源码和文档分享]基于Python的PyGame库实现的贪吃蛇小游戏
    1 项目介绍 1.1 简介 键盘上下左右控制蛇的前进方向,每吃到一个食物,蛇的长度增加一个单位,并生成一个新的食物,得分scores加一;当蛇撞到边界或自己时,游戏结束。时间time随蛇的步子增加,每走一步time加一。游戏结束后,按下空格键重新开始游戏,按下回车键结束游戏,退出。全程有音乐,退出后音乐也停止。 1.2 开发环境 开发语言:Python,pyCharm,pygame 2 方案 2.1 模块 pygame sys random pyglet 2.2 数据 蛇类和食物类 初始化窗口为600*600 像素块为25*25 蛇和食物都是正方形的结点 2.3 接口 蛇的身体设置为列表,初始化蛇有5节身体,依次递增 食物为小正方形,随机生成,一次一个 字体显示为函数控制 2.4 类 蛇类:初始化了各种有关蛇的属性。一开始初始化方向为向右,初始化蛇身为长度为五的列表。接着在蛇头处添加结点。再删除最后一个结点,判断是否死亡 食物类:初始化食物小方块,随机设置食物位置,如果蛇吃到了食物,则抹掉了该食物,重新设置食物 字体:设置字体,并且可以在窗口中显示 2.5 流程 先绘制窗口,设置窗口名字为“Snake Game”,设置时钟 初始化分数scores和time为0,是否死亡属性为false 初始化蛇类与食物类 当正常运行时,如果检测到键盘上下左右输入了,则改变蛇前进方向
  • 前端使用canvas实现贪吃蛇小游戏
    贪吃蛇是一款益智小游戏,通过点击上下左右四个按键控制蛇头移动。 项目地址:snakedemo地址:https://iwowen.github.io/demo/snake/snake.html 设计思路 主要是设计蛇的身体和移动方法。将蛇的身体设置成一个数组,数组里存放蛇身每一节的xy坐标。游戏开始后,蛇头(数组第0位)会随着时间不断地移动,也就是x+1或x-1或y+1或y-1,当蛇头移动了,身体的每一节xy将等于移动前它们的前一节,也就是说,第二节的位置将变成移动前蛇头的位置,依次变化就形成了蛇身的移动效果。当蛇吃到了食物的时候,则在数组里push蛇身移动前最后一节的xy值。 功能实现 1. 通过canvas绘制画布 <canvas id="canvas" width="500" height="300" style="border:5px solid #2f0606;"></canvas> canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d") ctx.fillStyle = "#c0b4b4"; ctx.fillRect(0, 0, 500, 300); 画布的长宽是500 * 300 2. 创建一条蛇 function Snake(x, y) { this.body = [[x, y]