复现贪吃蛇程序——构造小蛇

news/2024/11/19 23:41:29/

要求:

在画面中显示一条静止的小蛇。对于二维数组canvas[High][Width]的对应元素,值为0输出空格,值为-1输出边框#,值为1输出蛇头@,值为大于1的正数输出蛇身*。在startup() 函数中初始化蛇头在画布的中间位置(canvas[High/2][Width/2]=1;),蛇头向左依次生成4 个蛇身(for(i=1;i<=4;i++)   canvas[High/2][Width/2-i]=i+1;)元素值分别为2、3、4、5。

  PS:本文章主要是为了理解程序的每一步代码的含义和作用

           大多数解释都在程序中,下面还有额外补充的知识。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>     //在C++中简单说就是“通用输入输出库”,主要是文件和标准控制台的输入输出。 
#include<windows.h>   //写window程序需要的重要头文件 #define High 20       //定义游戏界面的高度为20
#define Width 30      //定义游戏界面的宽度为30int canvas[High][Width]={0};         //定义一个二维数组并对其赋初值void gotoxy(int x,int y)             //将光标移到(x,y)位置
{HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(handle,pos);
} 

 上述 gotoxy(int x,int y)函数的作用就是使光标移到位置(x,y),后面主函数对其进行调用时,对        x,y赋值后便可将光标移到固定的位置。

void startup()                         //定义一个startup函数
{int i,j;for(i=0;i<High;i++)                //对i进行20次循环{canvas[i][0]=-1;               //表示将第i+1行第1列全部输出为#canvas[i][Width-1]=-1;         //表示将第i+1行第30列全部输出为#}for(j=0;j<Width;j++){canvas[0][j]=-1;               //表示将第1行第j+1列全部输出为#canvas[High-1][j]=-1;          //表示将第20行第j+1列全部输出为#}canvas[High/2][Width/2]=1;         //表示将第10行第10列输出为@(蛇头)for(i=1;i<=4;i++)                  //表示在@左边依次输出三个*canvas[High/2][Width/2-i]=i+1;
}

上述的解释很详细,但是要着重强调一些地方便于更好的理解:

canvas[i][0]=-1;               //表示将第i+1行第1列全部输出为#
canvas[i][Width-1]=-1;         //表示将第i+1行第30列全部输出为#
canvas[0][j]=-1;               //表示将第1行第j+1列全部输出为#
canvas[High-1][j]=-1;          //表示将第20行第j+1列全部输出为#

要想理解这几段代码首先得先清楚二维数组的知识(下面为便于讲解,就先以a[i][j]为例):

   1.对于a[i][j]这个二维数组来说,i 为行数, j 为列数。

   2.其中 i ,j 都是从0开始的,因此a[0][0]代表的是第一行第一列,a[1][2]代表的是第二行第三列。

void show()
{gotoxy(0,0);                     //光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<High;i++)              //进行20次循环(外循环){for(j=0;j<Width;j++)         //进行30次循环(内循环){if(canvas[i][j]==0)      //将上述代码未重新赋值的,即保持最初赋初值的数字0输 printf(" ");         //输出为空格else if(canvas[i][j]==-1)printf("#"); else if(canvas[i][j]==1)printf("@");else if(canvas[i][j]>1)printf("*");}printf("\n");}
}

show函数的目的便是将二维数组按照题目要求值为0输出空格,值为-1输出边框#,值为1输出蛇头@,值为大于1的正数输出蛇身*。其中运用了if 和else  if  的语句来实现其目的。

void updateWithoutInput()         //与用户输入无关的更新(这里不做解释)
{
}void updateWithInput()            //与用户输入有关的更新(这里不做解释)
{
}int main()                        //主函数
{startup();                    //调用startup函数while(1)                      //游戏循环执行{show();updateWithoutInput();     //与用户输入无关的更新updateWithInput();        //与用户输入有关的更新}return 0;
}

运行结果如下:

##############################
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
#          ****@             #
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
#                            #
##############################

到此第一节——构造小蛇就运行成功了。


http://www.ppmy.cn/news/471082.html

相关文章

python为什么是蛇的天敌_蛇的天敌是什么?蛇獴对所有蛇毒免疫(成蛇类死对头)

蛇有着非常多的天敌&#xff0c;其中最为典型的有蛇獴、蜜獾、老鹰、蛇雕、猫鼬、眼镜王蛇等&#xff0c;尤其蛇獴是蛇最大的死敌&#xff0c;因为它不仅专门吃蛇&#xff0c;而且即便是吃饱了&#xff0c;看到蛇时蛇獴也会将其杀死&#xff0c;并且蛇獴几乎对蛇毒完全免疫&…

详解Python 画蝰蛇(适合初学者)

详解Python 画蝰蛇&#xff08;适合初学者&#xff09; 运行截图 代码 代码片. // An highlighted block import turtle def drawsnake(rad,angle,len,neckrad):a [blue,red,yellow,green,pink]for i in range(0,len):turtle.pencolor(a[i])turtle.circle(rad,angle)turtle…

一条大蟒蛇和一条小毒蛇

<script type"text/javascript"> </script> <script src"http://pagead2.googlesyndication.com/pagead/show_ads.js" type"text/javascript"></script> 一条大蟒蛇和一条小毒蛇是朋友。这天他们在路边发现了一只巨大…

python案例-蟒蛇

# 画蛇 import turtle # 引入海龟绘图体系 turtle.setup(650,350,200,200) # 设置一个窗体,宽650px,高350px,左上角坐标为(200,200) turtle.penup() # 将画笔抬起 turtle.fd(-250) # 让海龟倒退250px,因为画笔提起,所以没有轨迹留下 turtle.pendown() # 落下画笔 tu…

初识Python---感受蟒蛇的强大(一)

python 简介----python始终坚持着“只用一种最好的方法&#xff0c;来解决问题” 1&#xff0c;Python诞生--(吉多范罗苏姆创建&#xff09;Guido为了打发圣诞节的无趣&#xff0c;就开发一个全新的编程语言——Python 2,Python能用来做什么&#xff1a; 1>openstack业界公认…

Python蟒蛇代码

#Python 蟒蛇实例"""import turtle #引入turtle绘制图像外部库def drawSnake(rad, angle, len, neckrad):#def 用于定义函数for i in range(len):turtle.circle(rad, angle)#rad描述圆形轨迹半径的位置&#xff0c;angle弧度值turtle.circle(-rad, angle)turt…

【Python】蟒蛇程序

python英文名译为蟒蛇&#xff0c;下面我们来绘制这条“蟒蛇” import turtle def drawSnake(rad,angle,len,neckrad):for i in range(len):turtle.circle(rad,angle)#按圆形爬行turtle.circle(-rad,angle)turtle.circle(rad,angle/2)turtle.fd(rad)#乌龟向前直线爬行turtle.c…

centos tomcat

利用samba共享将所用的的组件复制到/usr/java/中 并给/usr/java设置777权限 Samba配置如下 重启smb服务 进入目录开始安装jdk 在当前目录解压jdk 配置环境变量 使配置生效 查看jdk版本 创建tomcat目录 解压tomcat的安装包到当前目录 进入tomcat配置目录 启动tomcat 先关闭在启…