Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C语言,画吃豆人剖析

C语言,画吃豆人剖析

原创
作者头像
诸葛青云
修改于 2020-02-26 00:52:04
修改于 2020-02-26 00:52:04
1.3K0
举报

我们看一下吃豆人的图片

看起来非常酷,如果我们就用几行代码就能画出吃豆人,这样会不会更酷,好吧,我们不吹牛,先从第一步开始。

第一步就是先画一个长方形,类似这样的

#include

#include

int main(){

double x,y;

/*在 -1 和 1 的区间内画出一个矩阵*/

for(y =1;y>=-1;y-=0.05,putchar('\n'))

for(x = -1;x<=1;x+=0.025)

putchar('.);

getchar();

}

输出图片如下:

这个代码应该不难吧,画出了这个之后,下面就是比较困难的了,就是在这个长方形里面勾勒出那个圆形

画圆形的代码应该也是不难的,画圆形的代码如下

#include

#include

int main(){

double x,y;

for(y =1;y>=-1;y-=0.05,putchar('\n'))

for(x = -1;x<=1;x+=0.025)

putchar(" ."[

x*x + y*y < 1 /*确定圆形的位置*/

]);/*pow(x,y) x的y 字幂 画吃豆人的眼睛*/

getchar();

}

输出图片如下:

完整代码

#include

#include

int main(){

double x,y;

for(y =0.9;y>=-0.9;y-=0.05,putchar('\n'))

for(x = -1;x<=1;x+=0.025)

putchar(" ."[

x*x + y*y < 1&& /*确定圆形的位置*/

fabs(atan2(y,x)) > 0.5 &&/*fabs 求绝对值 画吃豆人的嘴巴*/

x*x + pow(y-0.5,2) > 0.02]);/*pow(x,y) x的y 字幂 画吃豆人的眼睛*/

getchar();

}

分析一

putchar(" ."[])

这个代码我刚开起来有点拗眼,不知道写的是什么,但是既然用到[],那就肯定是跟数组有关系的。

我写了小代码

#include

#include

int main(){

putchar(" y"[1]);

getchar();

}

这个输出如下

y

其实我们这样看还不很明朗的话,我们可以这样看

#include

#include

int main(){

char *pos = "xy";

putchar(pos[1]);

getchar();

}

这个代码输出结果跟上面是一样的,pos 也就是那个字符串的别名

这样我们就知道了

putchar(" ."[

这句是通过后面的值来输出空格「 」 还是「 . 」

分析二

继续分析上面的三句关键代码

x*x + y*y < 1&& /*确定圆形的位置*/

fabs(atan2(y,x)) > 0.5 &&/*fabs 求绝对值 画吃豆人的嘴巴*/

x*x + pow(y-0.5,2) > 0.02]);/*pow(x,y) x的y 字幂 画吃豆人的眼睛*/

第一行是确定这个圆形。

第二行是用来确定吃豆人的嘴巴的,这个要有点数学功底才行,写这个的时候,我的数学基本已经送给老师了。

第三行是用来画吃豆人的眼睛的。

吃豆人的眼睛可以用下面这个代码来演示下

#include

#include

int main(){

double x,y;

for(y =1;y>=-1;y-=0.05,putchar('\n'))

for(x = -1;x<=1;x+=0.025)

putchar(" ."[

x*x + y*y < 1&& /*确定圆形的位置*/

fabs(atan2(y,x)) > 0.5 &&/*fabs 求绝对值 画吃豆人的嘴巴*/

x*x+(y-0.5)*(y-0.5) > 0.02]);/*pow(x,y) x的y 字幂 画吃豆人的眼睛*/

getchar();

}

x*x+(y-0.5)*(y-0.5)

这行代码决定小圆,大于号决定小圆的大小,边界。

分析三

小编给大家推荐一个学习氛围超好的地方,鼠标放到头像上就能看到

atan2

这个函数很强大,我们学习三角函数的时候用的是tan,但是这个atan2用的是两个参数,看我上面的图片,atan2(0,1) = 0,atan2(y,x)  第一个参数是 y ,第二个参数是 x。

最后运行如下图

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
惊呆了!C语言也能画小猪佩奇?【附源码】
使用带符号距离场(signed distance field, SDF)表示圆形:
小林C语言
2020/04/02
1.3K0
用C 语言画小猪佩奇 |这么火 你不了解下?
小猪佩奇是一只来自英国的粉红色小猪,脑袋长得有点像吹风筒,你有没有发现你的微信已经被小猪佩奇的人生格言轰炸了,朋友圈配图是它高傲开心的笑脸,好友的头像是它家族的成员,聊天记录到处是它的表情包~
刀刀老高
2018/07/24
1.9K0
用C 语言画小猪佩奇 |这么火 你不了解下?
<C语言>如何使用C语言代码打印“心形”图案?
算法链接:http://mathworld.wolfram.com/HeartSurface.html
全栈程序员站长
2022/09/17
7.3K0
<C语言>如何使用C语言代码打印“心形”图案?
C++ #include<cmath> 常用函数
4.取整与取余 double modf (double,double*); 将参数的整数部分通过指针回传,返回小数部分
用户7886150
2021/02/09
9680
C语言函数大全--a开头的函数
开始之前,引用一篇《基于Redis海量数据场景分布式ID架构实践》,该文通过比对不同实现方案的优缺点,帮助大家在分布式ID生成方面提供一些有益的参考和启示。有需要的朋友可以深入研究下!
huazie
2024/12/01
1640
C语言函数大全--a开头的函数
【C语言】数学函数详解
在C语言中,数学函数是由标准库 math.h 提供的。使用这些函数时,需要包含 #include <math.h> 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
LuckiBit
2024/12/11
2120
【C语言】数学函数详解
C语言 常用标准库函数 初学者常用
 C语言能用的函数有很多,限于篇幅,加上本人也是初学者,在这里只给出初学者常用的标准库函数。
叶茂林
2023/07/28
4330
复习C艹(更新中)
之前在win7中运行c/c++下个vc就可以编译运行了,现在换了Mac,上网一看需要下个xcode,哎哟,好大啊,当时又没网,捉急,咦,mac的终端可以编译cpp文件,天哪,棒呆了。 当然,使用mac的大佬们肯定知道,我这种小白还是记下来给小白一起看吧。
仇诺伊
2018/09/12
6400
C语言混乱代码
偶然看到的这么个东西,话说这个活动很久了。看了代码果然不一般啊,不一般。 /* + + + +
obaby
2023/02/24
3.5K0
P3433 [POI2005]PRA-Dextrogyrate Camel
小 \mathrm{H} 听说在 n 个不同的地方分别降下了雪,非常激动,于是约小 \mathrm{S} 一起去赏雪。小 \mathrm{S} 平时习惯利用虫洞进行空间穿梭,并不是很想走路,但看着小 \mathrm{H} 兴奋的样子,还是答应了。地面可以视作一个二维平面,小 S 观测到第 i 个降下了雪的地方 (以下简称为关键点) 的坐标为 \left(x_{i}, y_{i}\right)_{\text {。非常巧 }} 合的是,小 \mathrm{H} 恰好位于 1 号关键点,小 \mathrm{S} 恰好位于 2 号关键点。小 \mathrm{H} 会先从自己所在的 1 号点走向小 S 所在的 2 号点,然后和小 S 一起去若干关键点赏雪。不过由于小 S 并没有 去过小 \mathrm{H} 最初的位置,所以最后她们会一起走回 1 号点。根据各自的需要,她们为这趟赏雪之旅制定了两个规则:
yzxoi
2022/09/19
4570
【C语言】常用函数汇总表
通过这些表格和示例,你可以掌握C语言中各类常用函数的功能和使用方法。如果你需要进一步深入了解某个函数或需要更多示例,随时告诉我!
LuckiBit
2024/12/11
3000
【C语言】常用函数汇总表
圣诞将至—C语言圣诞树代码来啦
YIN_尹
2024/01/23
3360
圣诞将至—C语言圣诞树代码来啦
C语言绘制爱心
简介: 绘制爱心最重要的是公式,比如笛卡尔给他情人那个情书,就是一个函数表达式。画出来那个图之后就是一个爱心。
GeekLiHua
2025/01/21
960
C语言绘制爱心
数学思维+C语言画小猪佩奇,来试试?
我们可以看成是坐标轴。很自然的,小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:【 六二七,零一二,四六四 】适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程
猫咪爱分享
2018/08/05
2.3K0
借助CatGPT让turtlesim小乌龟画曲线
注意这里是CatGPT,不等同OpenAI的ChatGPT,但是用起来十分方便,效果也还行。
zhangrelay
2023/03/07
1.1K0
借助CatGPT让turtlesim小乌龟画曲线
C语言函数大全--f开头的函数(上)
注意: 如果文件中的一行,不足 n-1 个字符,则读完该行就直接结束。如若该行(包括最后一个换行符)的字符数超过 n-1,则 fgets 只返回一个不完整的行,但是,缓冲区总是以 NULL 字符结尾,对 fgets 的下一次调用会继续读该行。函数成功将返回 stream,失败或读到文件结尾返回 NULL。因此不能直接通过 fgets 的返回值来判断函数是否是出错而终止的,应该借助 feof 函数或者 ferror 函数来判断。
huazie
2025/01/17
1880
C语言函数大全--f开头的函数(上)
C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)
上面只是简单的介绍函数原型和功能,如果想对函数进一步了解可以下载以下文档 (内含详解与实例):
全栈程序员站长
2022/09/13
5.2K0
C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)
C++/C++11中头文件cmath的使用
<math.h>是C标准函数库中的头文件。在C++中一般用<cmath>。此头文件中声明了一系列函数来计算常见的数学运算和变换:
用户7886150
2021/02/11
8070
c++常用库函数整理总结
返回值:如果 c 在 A~Z、a~z 或0~9的范围内,则返回一个非0值;否则返回0。
用户7886150
2021/02/11
1.5K0
【Python】Math--数学函数(详细附解析~)
注意 frexp() 和 modf() 具有与它们的C等价函数不同的调用/返回模式:它们采用单个参数并返回一对值,而不是通过 '输出形参' 返回它们的第二个返回参数(Python中没有这样的东西)。
小言从不摸鱼
2024/09/10
2250
相关推荐
惊呆了!C语言也能画小猪佩奇?【附源码】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档