打怪C语言第二天

     前面记录了变量,这里归纳汇总一下变量命名原则:

一、变量

       1、只能由字母(包括大写和小写)、数字和下划线(_)组成
        2、不能以数字开头3、长度不能超过63个字符

        4、变量名中区分大小写

        5、变量名不能采用关键字

然后总结下局部变量和全局变量的知识点:

1、局部变量作用域是局部变量所在的局部范围,全局变量的作用域是整个项目(工程)

2、当局部变量与全局变量同名时,以局部变量优先

3、局部变量生命周期是进入作用域生命周期开始,出作用域生命周期结束

     全局变量作用域是整个程序的生命周期

二、常量

常量分为以下几种:

1、字面常量

2、const修饰的变量

3、#define定义的标识符常量

4、枚举常量

下面依次讲解这几种常量:

1、字面常量其实就是一些常数,例如30 、19.1、22.3等

2、const修饰的常变量:

看下面的代码

#include<stdio.h>
int main()
{
	 int a = 20;
	//这里创建了一个变量a,类型是整型,值为20
	a = 30;
	//这里修改了a的值,给a赋值为30;此处没有加const,值可以被更改
	//所以a输出的值应该为30
	printf("%d",a);
	return 0;
}

接下来看下面的代码:

#include<stdio.h>
int main()
{
	 const int a = 20;
	//const 修饰了这个变量a
	a = 30;
	//这里修改了a的值,给a赋值为30;此处添加const,值不可以被更改
	//所以这里程序会报错
	printf("%d",a);
	return 0;
}

这里说明了,const 修饰的值不可以被更改;下面的代码说明了const修饰的变量本质是一个变量

#include<stdio.h>
int main()
{
	char arr[10] = { 0 };
	//创建一个数组,数组名是arr,元素个数为10个,数组类型为char类型
	//因为数组个数为10,10是一个常数,那么我们可以验证const修饰的常变量
	//它到底是不是常数嘞,也就是说,用const修饰一个常变量,
	//然后把这个变量放在10所在的位置
	const int n = 0;
	char arr[n] = {0};
	//可以看到编译器报错了,说明这种写法是不行的,
	//则const修饰的常变量本质是是一个变量
	return 0;
}

上面的例子中的n被称为const修饰的常变量,const修饰的常变量在C语言中只是在语法层面限制变量n不能被直接更改,但是n本质上还是一个变量,所以叫常变量。

3、枚举常量

        看下面的代码:

#include<stdio.h>
int main()
{
	enum sex
	{
		MALE,
		FEMALE,
		SECRET,
	};
	printf("%d\n",MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);
	return 0;
} 

看到打印的结果为0 1 2 ;说明枚举常量也是一个常量。

三、字符串、转义字符、注释

        3.1 字符串

字符串:由双引号引起来的一串字符称为字符串字面值,简称字符串。例如:“hello world”

#include<stdio.h>
int main()
{
	char arr1[] = "bit";
	char arr2[] = {'a','b','c'};
	char arr3[] = {'a','b','c','\0'};
	printf("%s\n",arr1);
	printf("%s\n", arr2);
	printf("%s\n", arr3);
	return 0;
}

附上代码的输出结果并分析造成这种现象的原因:

 arr2之所以会出现这样的结果是因为字符结束标志是\0;而arr2中程序找不到\0;所以后面会出现随机值,知道计算机找到\0时,程序才会结束。而arr3里面有\0,那么程序直接输出abc

上面的例子说明了\0是字符串结束标志。

        3.2 、转义字符

        常见转义字符:
                 \0        ASCII码值为0
                 \'        表示字符常量'
                 \''    表示字符串内部的双引号
                 \a        警告字符,蜂鸣
                 \b        退格符
                 \\        表示一个反斜杠,防止它被解释为一个转义序列符
                 \n        换行
                 \r        回车
                 \t        水平制表符
                 \ddd    ddd表示1到3个八进制数字
                 \xdd     dd表示2个十六进制数字

问题:如果想要在屏幕上打印一个双引号和一个斜杠以及单引号需要怎么做?

#include<stdio.h>
int main()
{
	printf("\''\n");
	printf("\\\n");
	printf("\'\n");
	return 0;
}

这里来讲讲\ddd 以及\xdd这两个转义字符;看下面的代码:

#include<stdio.h>
int main()
{
	printf("%c", '\073');
	printf("%c",'\x23');
	return 0;
}

   \073加单引号的原因是因为这是输出一个字符; 求这个字符的思路是先算出这个数,然后找到这个数所对应的ASCII码值,  ASCII码值对应的符号就是这个字符。 \073所对应的十进制数是59;对应ASCII码值是; 所以结果输出;    同理\x23打印#

                附上ASCII码表以方便以后查找或者回忆的时候使用。

 

这里再提示一下数值0、\0、以及字符'0'三者的区别:

1、\0的ASCII码值为0;可以认为\0与数值0相同;

2、字符'0'ASCII码值为48,不可以把它与0和\0混淆

3.3 、注释

注释相对比较简单并且常用,不做汇总了;其实无外乎就是单行注释用//;多行注释用/* 内容*/比较方便;记住两个快捷键,注释用ctrl+K+C;取消注释用ctrl+K+U

  
    

抱歉,C语言主要用于系统级编程、嵌入式开发等,并不适合编写复杂的电子游戏如《王者荣耀》的代码。然而,如果你想了解如何用C语言实现简单的游戏逻辑,比如控制角色移动和打怪的基本框架,可以考虑以下几个步骤: 1. **创建角色类**:定义一个基础的角色结构体,包含位置(x, y)、生命值(health)和攻击力(attack)等属性。 ```c typedef struct { int x, y; int health; int attack; } Character; ``` 2. **怪物类**:同样为一个结构体,可以有额外的特定属性,如血量减益或者特殊攻击技能。 ```c typedef struct { Character base_stats; // 加上怪物特有的属性... } Monster; ``` 3. **打怪函数**:设计一个函数,用于计算角色对怪物的伤害并更新怪物状态。 ```c void attack(Character* player, Monster* monster) { int damage = player->attack - monster->defense; // 假设怪物有一个防御属性defense if (damage > 0) { monster->health -= damage; printf("Player dealt %d damage to the monster.\n", damage); if (monster->health <= 0) { printf("Monster defeated!\n"); } } else { printf("The attack missed.\n"); } } ``` 4. **移动函数**:处理角色的基本移动逻辑,例如接收用户输入并更新其位置。 5. **主循环**:在一个无限循环中,接收用户的输入,更新角色和怪物的状态,然后检查是否需要打怪。 这只是一个非常基础的示例,实际的《王者荣耀》那样的游戏会涉及到更复杂的数据结构、图形界面以及网络通信等技术。如果你对学习C语言游戏编程感兴趣,可以从学习简单的控制台游戏开始,逐渐提升到使用游戏引擎如Unity或Cocos2D-x。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值