当前位置: 首页 > news >正文

【c语言】贪吃蛇

当我们不想学习新知识的时候,并且特别无聊,就会突然先看看别人怎么写游戏的,今天给大家分享的是贪吃蛇,所需要的知识有结构体,枚举,以及easy-x图形库的一些基本函数就完全够用了,本来我想插入游戏的音乐,但是没找到贪吃蛇的背景音乐,所以就没加,大家可以参考我之前的博文里面有如何加音乐的教程

包含的头文件

#include <stdio.h>
#include <graphics.h>//图形库头文件
#include <conio.h>//_kbhit()函数头文件
#include <stdlib.h>//srand函数头文件
#include <time.h>//time()函数头文件

初始化界面

int main()
{initgraph(640,480);//初始化界面while (1);return 0;}

初始化长640,宽480的界面,while(1);使得界面一直出现
在这里插入图片描述

设置背景颜色

int main()
{initgraph(640,480);setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备while (1);return 0;}

setbkcolor中的RGB(31, 29, 66),打开微信,同时按下Alt键,A,可获取你截图中颜色的RGB;
在这里插入图片描述

定义蛇的信息结构体,枚举定义蛇的方向

#define SNAKE_NUM 500// 最大有500节
struct Snake
{int size;//蛇的节数int dir;//蛇的方向int speed;//蛇的速度POINT coor[SNAKE_NUM];//蛇的坐标}snake;
enum DIR  //表示蛇的方向
{UP,//向上DOWN,//向下LEFT,//向左RIGHT,//向右
};

数据初始化

void gameinit()
{    snake.size = 3;//初始化蛇刚开始为三节snake.speed = 8;//初始速度是每按一次方向键改变八个像素的位置snake.dir = RIGHT;//初始蛇的方向是向右for (int i = 0; i < snake.size; i++){snake.coor[i].x = 40 - 10 * i;snake.coor[i].y = 10;}}

在for循环内定义好每一节的圆心坐标,记snake.coor[0].x为蛇头的圆心坐标的横坐标,记snake.coor[0].y为蛇头的圆心坐标的纵坐标,初始化三节,for循环定义这三节的坐标,头的圆心坐标为(40,10)中间为(30,10),最后为(20,10);初始化蛇应该是横着的。

整合函数

函数写的太乱,我们可以将相同的功能放在一个函数里面,比如说将initgraph(640, 480);放在gameinit()里面,将画的都放在gamedraw()函数里面。

//数据初始化
void gameinit()
{initgraph(640, 480);snake.size = 3;snake.speed = 8;snake.dir = RIGHT;for (int i = 0; i < snake.size; i++){snake.coor[i].x = 40 - 10 * i;snake.coor[i].y = 10;}}
void gamedraw()
{BeginBatchDraw();//双缓冲消除闪屏setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备//绘制蛇setfillcolor(RED);//设置蛇的颜色for (int i = 0; i < snake.size; i++){solidcircle(snake.coor[i].x, snake.coor[i].y, 5);//循环绘制蛇的三节身体}EndBatchDraw();//双缓冲消除闪屏}
int main()
{gameinit();gamedraw();while (1);return 0;}

在绘制蛇那里setfillcolor(RED);//设置蛇的颜色,在设置蛇的颜色下面的循环中是画初始化好的三节蛇的身体,solidcircle(snake.coor[i].x, snake.coor[i].y, 5);这个是画实心圆的函数,前两个参数为圆的横纵坐标,第三个参数是圆的半径
在这里插入图片描述

键盘控制移动方向

void keycontrol()
{//72 80 75 77if (_kbhit()){switch (_getch()){case 'w':case 'W':case 72:if (snake.dir != DOWN){snake.dir = UP;}break;case 's':case 'S':case 80:if (snake.dir != UP){snake.dir = DOWN;}break;case 'a':case 'A':case 75:if (snake.dir != RIGHT){snake.dir = LEFT;}break;case 'd':case 'D':case 77:if (snake.dir != LEFT){snake.dir = RIGHT;}break;}}}

_kbhit()是一个C和C++函数,用于非阻塞地响应键盘输入事件,即键盘敲击。它检查当前是否有键盘输入,如果有则返回一个非0值,否则返回0。
w,s,a,d对应的虚拟键值为72,80,75,77.当_kbhit()返回不为0,则有键按下,_getch 是 C 语言中常用的一个函数,它可以获取用户在控制台输入的一个字符,并且不需要回车。当按下方向键后,_getch()读取按下的字符,将蛇的方向改变成对应的方向键。为什么这里有条件判断语句if,是因为蛇在向一个方向走的时候不能直接往相反的方向走.比如说按下w,往上走,除了向下走外,向左走,和向右走的时候按向上走就可以向上走。

蛇的移动

void snakemove()
{for (int i = snake.size-1; i>0; i--)//身体跟着头移动{snake.coor[i] = snake.coor[i - 1];}switch (snake.dir)//头移动{case RIGHT:snake.coor[0].x+=snake.speed;if (snake.coor[0].x > 640){snake.coor[0].x = 0;}break;case UP:snake.coor[0].y-= snake.speed;if (snake.coor[0].y < 0){snake.coor[0].y = 480;}break;case DOWN:snake.coor[0].y+=snake.speed;if (snake.coor[0].y > 480){snake.coor[0].y = 0;}break;case LEFT:snake.coor[0].x-=snake.speed;if (snake.coor[0].x < 0){snake.coor[0].x = 640;}break;}}

每次调用snakemove函数,让后面每一节等于前面那一节的坐标,就能实现尾巴身体跟着头动,switch中是此时头移动的方向,向哪个方向移动,对应方向上的x坐标或者y坐标就+或者-snake.speed;比如说向左就是对应x-snake.speed,向右就是x+snake.speed;向上就是y-snake.speed;向下就是y+snake.speed;这里为什么有判断语句if,这里是因为当蛇头到达边界位置的话,就可以从相反的边界出来,界面的大小是640*480;比如说蛇向左走,遇到左边界,就把蛇头的x坐标置为640.

主函数变化

int main()
{gameinit();gamedraw();while (1){gamedraw();keycontrol();snakemove();Sleep(20);}return 0;}

将键盘控制函数和蛇的移动的函数放在while循环里面,因为要无时无刻地获取从键盘上读来地值和蛇的移动,当不加Sleep函数时,蛇跑的特别快,让程序休眠20ms
视频演示

20230921_173904

食物信息结构体定义

struct food
{int x;//食物的横坐标int y;//食物的纵坐标bool flag;//食物是否被吃int r;//食物半径DWORD color;//食物颜色}food;

食物信息初始化(修改数据初始化函数)

//数据初始化
void gameinit()
{    //设置随机数种子srand((unsigned int)time(NULL));//时间不断变化,initgraph(640, 480);//初始化界面snake.size = 3;snake.speed = 8;snake.dir=RIGHT;for (int i = 0;i<snake.size;i++){snake.coor[i].x = 40-10*i;snake.coor[i].y = 10;}//随机初始化食物的横纵坐标food.x = rand() % 640;food.y = rand() % 480;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.r = rand() % 10 + 5;food.flag = true;}

因为食物的位置,颜色,以及食物的半径要随机生成,必须用到rand函数生成随机数,但rand生成的随机数是不变的,所以要通过srand函数生成随机数种子,食物必须在界面内,所以food.x=rand()%640的话,food.x的范围为0-639,同理food.y,以及RGB的三个参数都是0-255的,所以对256取余数,半径是在0-9之间,在加上5,食物半径就在5-14之间,food.flag 定义的是食物是否被吃掉,没被吃掉就为true,吃掉后food.flag变为false.

蛇吃食物

void eatfood()
{if (food.flag&&snake.coor[0].x>=food.x-food.r&&snake.coor[0].x<=food.x+food.r  && snake.coor[0].y >= food.y - food.r && snake.coor[0].y <= food.y + food.r){food.flag = false;snake.size++;}if (!food.flag)//食物消失重新生成一个{food.x = rand() % 640;food.y = rand() % 480;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.r = rand() % 10 + 5;food.flag = true;}}

如果要吃掉食物用蛇头圆心的坐标等于食物圆心的坐标的话,是不容易吃到食物的,所以只要蛇头的圆心坐标落入以食物圆心做出的外切正方形的范围内的话,就算吃到,对应食物正方形的边界坐标为food.x-food.r(左边界),
food.x+food.r(右边界),food.y+food.r(上边界),food.y-food.r(下边界),只要蛇头圆心落入该范围内就算吃到,吃到的话,food.flag=false;表示食物被吃掉,并且蛇的长度snake.size++;当食物被吃掉后,food.flag=0,此时!food.flag=1;立即生成下一个食物坐标,如果这里判断蛇头是否落在食物范围内时,如果不加&&food.flag的话,蛇吃第一个食物,会由三节直接变成五节在这里插入图片描述

绘制食物(修改绘制函数)

void gamedraw()
{BeginBatchDraw();setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备//绘制蛇setfillcolor(RED);//设置蛇的颜色for (int i = 0; i < snake.size; i++){solidcircle(snake.coor[i].x, snake.coor[i].y, 5);}//绘制食物if (food.flag)//如果food.flag==1的话就绘制食物{solidcircle(food.x, food.y, food.r);}EndBatchDraw();}

主函数修改

int main()
{gameinit();gamedraw();while (1){gamedraw();keycontrol();snakemove();eatfood();//增加的Sleep(20);}return 0;}

游戏暂停函数

void gamestop()//空格,游戏暂停
{if (_kbhit()){if (_getch()== ' '){while (_getch() != ' ');}}}

按下空格游戏暂停,_kbhit函数作用上面解释过了,然后如果从键盘读取的空格后,缓冲区没东西,就在一直循环,在按一次就继续游戏,注意修改的主函数

修改主函数

int main()
{gameinit();gamedraw();while (1){gamestop();gamedraw();keycontrol();snakemove();eatfood();Sleep(20);}return 0;}

程序源码

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#define SNAKE_NUM 500
enum DIR  //表示蛇的方向
{UP,DOWN,LEFT,RIGHT,
};
struct Snake//蛇结构体
{int size;//蛇的节数int dir;//蛇的方向int speed;//蛇的速度POINT coor[SNAKE_NUM];//节数}snake;
struct food//食物结构体
{int x;int y;bool flag;//食物是否被吃int r;//食物半径DWORD color;//食物颜色}food;
//数据初始化
void gameinit()
{initgraph(640, 480);snake.size = 3;snake.speed = 8;snake.dir = RIGHT;for (int i = 0; i < snake.size; i++){snake.coor[i].x = 40 - 10 * i;snake.coor[i].y = 10;}}
void gamestop()//空格,游戏暂停
{if (_kbhit()){if (_getch() == ' '){while (_getch() != ' ');}}}
void gamedraw()//画函数
{BeginBatchDraw();setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备//绘制蛇setfillcolor(RED);//设置蛇的颜色for (int i = 0; i < snake.size; i++){solidcircle(snake.coor[i].x, snake.coor[i].y, 5);}//绘制食物if (food.flag){solidcircle(food.x, food.y, food.r);}EndBatchDraw();}
void keycontrol()//键盘控制方向
{//72 80 75 77if (_kbhit()){switch (_getch()){case 'w':case 'W':case 72:if (snake.dir != DOWN){snake.dir = UP;}break;case 's':case 'S':case 80:if (snake.dir != UP){snake.dir = DOWN;}break;case 'a':case 'A':case 75:if (snake.dir != RIGHT){snake.dir = LEFT;}break;case 'd':case 'D':case 77:if (snake.dir != LEFT){snake.dir = RIGHT;}break;}}}
void snakemove()//蛇的移动
{for (int i = snake.size - 1; i > 0; i--)//身体跟着头移动{snake.coor[i] = snake.coor[i - 1];}switch (snake.dir)//头移动{case RIGHT:snake.coor[0].x += snake.speed;if (snake.coor[0].x > 640){snake.coor[0].x = 0;}break;case UP:snake.coor[0].y -= snake.speed;if (snake.coor[0].y < 0){snake.coor[0].y = 480;}break;case DOWN:snake.coor[0].y += snake.speed;if (snake.coor[0].y > 480){snake.coor[0].y = 0;}break;case LEFT:snake.coor[0].x -= snake.speed;if (snake.coor[0].x < 0){snake.coor[0].x = 640;}break;}}
void eatfood()//吃食物
{if (food.flag && snake.coor[0].x >= food.x - food.r && snake.coor[0].x <= food.x + food.r && snake.coor[0].y >= food.y - food.r && snake.coor[0].y <= food.y + food.r){food.flag = false;snake.size++;}if (!food.flag)//食物消失重新生成一个{food.x = rand() % 640;food.y = rand() % 480;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.r = rand() % 10 + 5;food.flag = true;}}
int main()
{gameinit();gamedraw();while (1){gamestop();gamedraw();keycontrol();snakemove();eatfood();Sleep(20);}return 0;}

程序演示

20230921_184525

相关文章:

【c语言】贪吃蛇

当我们不想学习新知识的时候&#xff0c;并且特别无聊&#xff0c;就会突然先看看别人怎么写游戏的&#xff0c;今天给大家分享的是贪吃蛇&#xff0c;所需要的知识有结构体&#xff0c;枚举&#xff0c;以及easy-x图形库的一些基本函数就完全够用了&#xff0c;本来我想插入游…...

【Node.js】定时任务cron:

文章目录 一、文档&#xff1a;【Nodejs 插件】 二、安装与使用【1】安装【2】使用 三、cron表达式&#xff1a;{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}四、案例&#xff1a; 一、文档&#xff1a; 【说明文档】https://www.npmjs.com/package/cron 【Cron表…...

vue3 引入element-plus

1.首先安装element-plus npm install element-plus 2.main.js配置 ... import ElementPlus from element-plus import element-plus/theme-chalk/index.css; //导入图标 import * as ELementPlusIconsVue from "element-plus/icons-vue" ... app.use(ElementPlus) /…...

数据通信——传输层TCP(超时时间选择)

引言 TCP每一次发送报文段&#xff0c;就会对这个报文段设置一次计时器。如果时间到了却没有收到确认报文&#xff0c;那么就要重传该报文。 这个之前在TCP传输的机制中提到过&#xff0c;这个章节就来研究一下超时时间问题。 关于加权的概念 有必要提及一下加权的概念&#x…...

【数据库索引优化】

文章目录 数据库索引优化1. 选择合适的字段创建索引2. 限值每张表上的索引数量3. 被频繁更新的字段应该慎重建立索引4. 尽可能考虑简历联合索引而不是单列索引5. 避免冗余索引6. 字符串类型的字段使用前缀索引代替普通索引7. 避免索引失效8. 删除长期未使用的索引 数据库索引优…...

WebGL 选中物体

目录 前言 如何实现选中物体 示例程序&#xff08;PickObject.js&#xff09; 代码详解 gl.readPixels&#xff08;&#xff09;函数规范 示例效果 前言 有些三维应用程序需要允许用户能够交互地操纵三维物体&#xff0c;要这样做首先就得允许用户选中某个物体。对物体…...

科目二倒车入库

调整座位和后视镜 离合踩到底大腿小腿成130-140 上半身90-100 座椅高度能看到前方全部情况 后视镜调节到能看到后门把手&#xff0c;且后门把手刚好在后视镜上方边缘、离车1/3处。 保持直线&#xff1a; 前进&#xff1a; 车仪表盘中央的原点和地面上的黄线擦边&#xff…...

PostgreSQL如何支持PL/Python过程语言

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;10.4 文档用途 本文档主要介绍PostgreSQL如何支持PL/Python过程语言&#xff0c;如何创建plpython扩展。 详细信息 一、PostgreSQL支持python语言…...

【C++】STL之适配器---用deque实现栈和队列

目录 前言 一、deque 1、deque 的原理介绍 2、deque 的底层结构 3、deque 的迭代器 4、deque 的优缺点 4.1、优点 4.2、缺点 二、stack 的介绍和使用 1、stack 的介绍 2、stack 的使用 3、stack 的模拟实现 三、queue 的介绍和使用 1、queue 的介绍 2、queue 的使用 3、qu…...

PHY6230低成本遥控灯控芯片国产蓝牙BLE5.2 2.4G SoC

高性价比的低功耗高性能蓝牙5.2系统级芯片&#xff0c;适用多种PC/手机外设连接场景。 高性能多模射频收发机&#xff1a; 通过硬件模块的充分复用实现高性能多模数字收发机。发射机&#xff0c;最大发射功率10dBm&#xff1b;BLE 1Mbps速率接收机灵敏度达到-96dBm&#xff1…...

OceanBase杨传辉传递亚运火炬:国产数据库为“智能亚运”提供稳稳支持

9 月 14 日&#xff0c;亚运火炬传递到了浙江台州&#xff0c;OceanBase 的 CTO 杨传辉作为火炬手交接了第 89 棒火炬。 2010 年&#xff0c;杨传辉作为创始成员之一参与自研原生分布式数据库 OceanBase。十年磨一剑&#xff0c;国产数据库 OceanBase 交出了一张优秀的成绩单&a…...

分布式锁实现方法

分布式锁 什么时候需要加锁 有并发&#xff0c;多线程有写操作有竞争关系 场景&#xff1a; 电商系统&#xff0c;下单流程&#xff1a;用户下单–>秒杀系统检查redis商品库存信息–>用户锁定并更新库存&#xff08;mysql&#xff09;—>秒杀系统更新redis 问题&…...

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试&#xff1f;未来已寄..测试人该何去何从&#xff1f;【自动化测试、测试开发、性能测试】 缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report&#xff08;SBR&#xff09;或软件问题报告Software Pr…...

pytorch冻结参数训练的坑

由于项目需要训练一个主干网络接多个分支的模型&#xff0c;所以先训练一个主干网络加第一个分支&#xff0c;再用另外的数据训练第二个分支&#xff0c;训练的过程中需要冻结主干网络部分&#xff0c;后面的分支训练过程也一样需要冻结主干网络部分。 冻结模型的方式 for nam…...

P1827 [USACO3.4] 美国血统 American Heritage(前序 + 中序 生成后序)

P1827 [USACO3.4] 美国血统 American Heritage&#xff08;前序 中序 生成后序&#xff09; 一、前言 二叉树入门题。涉及到树的基本知识、树的结构、树的生成。 本文从会从结构&#xff0c;到完成到&#xff0c;优化。 二、基础知识 Ⅰ、二叉树的遍历 前序遍历&#xff…...

【四、centOS安装docker】

安装docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 如果以上报错 备份系统自带yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup进入 /etc/yum.repos.d cd /etc/yum.repos.d删除文件 rm -f *.r…...

想学嵌入式开发,薪资怎么样?

想学嵌入式开发&#xff0c;薪资怎么样&#xff1f; 对于嵌入式工程师来说呢&#xff0c;它重点学习内容就是首先一定要打好基础&#xff0c;如果从编程语言角度来讲&#xff0c;那么可以在语言上选C或者C&#xff0c;你可以选择其中任何一门语言作为你的入门。 最近很多小伙伴…...

SQL死锁进程内容查询语句

1.方式1 SELECT object_name(A.resource_associated_entity_id) as TABLENAME, A.request_session_id AS SPID,DB_NAME(B.dbid) AS DBName,B.blocked,B.dbid,B.program_name,B.waitresource,B.lastwaittype,B.loginame,B.hostname,B.login_time,B.last_batch--,B.* FROM sy…...

Ubuntu 20.04中Nightingale二进制部署

参考博客《【夜莺监控】初识夜莺&#xff0c;强&#xff01;》 lsb_release -r可以看到操作系统版本是20.04&#xff0c;uname -r可以看到内核版本是5.5.19。 sudo apt-get update进行更新镜像源。 完成之后&#xff0c;如下图&#xff1a; sudo apt-get upgrade更新软件…...

深入探讨Java面试中内存泄漏:如何识别、预防和解决

引言 在编写和维护Java应用程序时&#xff0c;内存泄漏是一个重要的问题&#xff0c;可能导致性能下降和不稳定性。本文将介绍内存泄漏的概念&#xff0c;为什么它在Java应用程序中如此重要&#xff0c;并明确本文的目标&#xff0c;即识别、预防和解决内存泄漏问题。 内存泄…...

win10 安装.net framework 3.5,错误代码0x8024401C

win10 安装.net framework 3.5&#xff0c;错误代码0x8024401C 参考链接&#xff1a;https://www.gxlsystem.com/diannaowenti-386775.html 解决方法如下&#xff0c;cmd中执行&#xff1a; net stop wuauserv reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\W…...

杂记 | Langchain中few-shot提示词模板的使用(给提示词添加示例)

文章目录 01 普通的提示词模板02 few-shot提示词模板 Langchain是一个集成多个大语言模型的开源框架&#xff0c;可以使用它来快速开发大语言模型应用。 本文的代码使用到的模块&#xff1a; from typing import List, Dict from langchain import PromptTemplate, FewShotPr…...

SVN -基础

SVN - 基础 概念操作步骤开发实际经验 概念 带SVN路径 有隐藏文件&#xff0c;记录repo的一些信息&#xff0c;与repo进行关联&#xff0c;可以与repo进行同步 不带SVN路径 只是单纯的文件&#xff0c;与repo独立 操作步骤 checkout 具有路径 URLcheckout dir 输出目标文件夹…...

MySQL基础终端命令与Python简单操作MySQL

文章目录 MySQL终端命令1. 进入mysql2. 创建数据库3. 选择数据库4. 创建数据表1. 主键约束2. 外键约束3. 非空约束4. 唯一约束5. 使用默认约束6. 设置id为自增列 5. 查看数据表6. 修改数据表1. 修改表名2. 修改表的字段类型3. 修改表的字段名4. 为表添加字段5. 删除字段6. 调整…...

编译原理.龙书学习1

第一章&#xff1a; 编译器&#xff1a;将程序翻译成一种能够被计算机执行的形式 解释器&#xff1a;解释器直接利用用户提供的输入执行源程序中指定的操作 一个编译器的结构 编译器将源程序映射为语义上等价的目标程序&#xff0c;这个映射过程由两部分组成&#xff1a;分析…...

anaconda安装完成之后输入conda -V没有反应

anaconda安装完成后&#xff0c;conda没有反应 vim ~/.bashrc后面添加内容 # added by Anaconda3 5.3.0 installer # >>> conda init >>> # !! Contents within this block are managed by conda init !! __conda_setup"$(CONDA_REPORT_ERRORSfalse /u…...

netty报文解析之粘包半包问题

粘包问题 Netty 的粘包问题是指在网络传输过程中&#xff0c;由于 TCP 协议本身的特点&#xff0c;导致发送方发送的若干个小数据包被接收方合并成了一个大数据包。这种情况称为粘包。 TCP 协议是面向流的协议&#xff0c;没有数据边界&#xff0c;发送方发送的数据可能会被分…...

EasyCode整合mybatis-plus的配置

文章目录 entitymapper.javamapper.xmlserviceserviceImplcontroller 这篇文章不教你如何安装和使用EasyCode&#xff0c;只是贴出可以使用的配置。 具体EasyCode的使用可以查看其它的文章。 entity ##导入宏定义 $!{define.vm}##保存文件&#xff08;宏定义&#xff09; #sa…...

实施预测性维护解决方案的挑战及PreMaint的应对方法

前面我们介绍了企业选择预测性维护解决方案的常见问题和PreMaint的策略&#xff0c;本期我们将带来实施过程中可能会遇到的挑战&#xff0c;以及如何通过PreMaint来应对这些挑战&#xff0c;以实现可靠的预测性维护。 随着工业技术的不断进步&#xff0c;预测性维护作为一种先进…...

1. js中let、var、const定义变量区别与方式

1 声明语法 var upperA A; let upperB B; const upperC C; 只声明不初始化的结果&#xff0c;【 const定义的常量不可以修改&#xff0c;而且必须初始化】 // var 声明变量 var upperA; console.log(打印大写的A&#xff1a;%s, upperA); // 结果&#xff1a;打印大写的A&am…...

用.net做网站好_还是用php/台州seo快速排名

author&#xff1a;咔咔 wechat&#xff1a;fangkangfk 看了文档后&#xff0c;说这种写法是获取form模块&#xff0c;也就是说操作from模块需要使用form来调用 保存按钮的lay_fileter的值&#xff0c;就是监听提交事件的test //监听提交按钮form.on(submit(test), function(…...

陕西住房建设厅考试官方网站/搜索关键词排行榜

1、软链接 也称符号链接&#xff0c;类似于Windows上的快捷方式&#xff0c;使用cat、vi命令时打开的查看的是同一个文件内容。软链接文件的属性是777&#xff0c;但这不是源文件的属性&#xff0c;访问时仍然是依据源文件的属性来使用。   软链接文件的大小是所创建时源文件…...

如何查找网站竞争对手的宣传方式/seo分析是什么意思

一、唯一定律 无论有多少人共同参与同一项目&#xff0c;一定要确保每一行代码都像是唯一个人编写的。 二、HTML 2.1 语法 &#xff08;1&#xff09;用两个空格来代替制表符&#xff08;tab&#xff09; — 这是唯一能保证在所有环境下获得一致展现的方法。 &#xff08;2&…...

网站title在哪里/搜索引擎优化技术都有哪些

第一个&#xff1a;1.打开一个空白的记事本文件 。2.在第一行写入.LOG(大写)&#xff0c;回车并存盘退出。3.双击你刚刚保存的文件&#xff0c;这是应该注意到在文件的最后出现了此时的日期时间。4.你可以输入要写入的内容&#xff0c;存盘退出。5.每一次你打开这个文件&#x…...

网站怎么会k/郑州网络营销公司哪个好

暗恋橘生淮南越播越热&#xff0c;小编觉得洛枳选角很好&#xff0c;骄傲又小心翼翼。但是盛淮南真的不帅&#xff0c;有时候还有点渣男气质&#xff0c;不够有魅力。配音也很尬。不过还是有很多名场面。大学生活挺写实的。不过小编最喜欢的还是张明瑞这个角色。那么张明瑞喜欢…...

wordpress 邮箱 通知/什么是信息流广告

Cacti做为当今天运维人员的主流监控工具已经应该很广泛了&#xff0c;下面我就来把我的安装步骤罗列如下;(1).Cacti安装之前要准备Linx平台下的Web架构&#xff1b;(2).Linux下的Web搭建的方法如下;[rootMonitor-Cacti ~]# yum -y install httpd mysql-server php php-mysql gd…...