请大神们进来指点一下

weixin_40757263 2019-01-25 11:10:40

最近在学习C#,又赶上佩奇那么火,偶尔看到一大神用c画的佩奇,想将代码改成C#的,但是这一句没有看懂,望大神们指点一下,谢谢!
...全文
1058 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_43647722 2019-01-28
  • 打赏
  • 举报
回复
666666666666
weixin_44624417 2019-01-27
  • 打赏
  • 举报
回复
这个小程序不错,可以有虽然看不懂
mu3380 2019-01-27
  • 打赏
  • 举报
回复
这个小程序不错,可以有虽然看不懂
이보 2019-01-27
  • 打赏
  • 举报
回复
下载需要的金币是不是只能充值啊?
qq_26702469 2019-01-27
  • 打赏
  • 举报
回复
66666666666666666666666
货郎大叔 2019-01-26
  • 打赏
  • 举报
回复
图片看的不是很清楚
xuzuning 2019-01-26
  • 打赏
  • 举报
回复
哪里??? putchar c语言函数之一,作用是向终端输出一个字符。其格式为putchar(c),其中c可以是被单引号(英文状态下)引起来的一个字符,可以是介于0~127之间的一个十进制整型数(包含0和127),也可以是事先用char定义好的一个字符型变量。
weixin_40757263 2019-01-26
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
int main(int a ,char**b)
是 C 程序的入口函数
对应 C# 的
static void Main(string[] args)

char** 是字符指针的指针,相当于 C# 的 string[]

请问putchar中的【double a,double b】代表的是什么意思?
cslufi 2019-01-26
  • 打赏
  • 举报
回复
好久没看这个了
weixin_40757263 2019-01-26
  • 打赏
  • 举报
回复
引用 12 楼 xuzuning 的回复:

谢谢!!!!
有心了,老哥!
xuzuning 2019-01-26
  • 打赏
  • 举报
回复
xuzuning 2019-01-26
  • 打赏
  • 举报
回复
是的,".|/=\\|/=\\|@!"[(int)a] 表示第几个字符
xuzuning 2019-01-26
  • 打赏
  • 举报
回复
帮你移植了一下
namespace 佩奇
{
    class Program
    {
        static void Main(string[] args)
        {
            //https://cloud.tencent.com/developer/news/233009
            //https://www.cnblogs.com/yezibiancheng/p/9426658.html
            //http://www.cnblogs.com/momoowo/archive/2018/06/17/9192488.html
            for (double y = -1; y < 1; y += 0.05, putchar('\n'))
                for (double x = -1; x < 1; x += 0.05)
                    putchar(outline(x, y));
            var s = 1.0;
            for (double y = -1; y < 0.6; y += 0.05 / s, putchar('\n'))
                for (double x = -1; x < 0.6; x += 0.025 / s)
                    putchar(" .|/=\\|/-\\|@! "[(char)f(u(x, y, 0.3), v(x, y, 0.3))]);
        }
        
        static double f0(double x, double y)
        {
            return Math.Sqrt(x * x + y * y) - 0.8;
        }
        static char outline(double x, double y)
        {
            var delta = 0.001;
            if(Math.Abs(f0(x,y))<0.05)
            {
                var dx = f0(x+delta,y)-f0(x-delta,y);
                var dy=f0(x+y+delta,y)-f0(x,y-delta);
                return "|/=\\|/=\\|"[(int)((Math.Atan2(dy,dx)/(2*Math.PI)+0.5)*8+0.5)];
            }
            else if(f0(x,y)<0) return '.';
            else return ' ';        
        }
        static void putchar(char c)
        {
            Console.Write(c);
        }
        static double c(double x, double y, double r) //基本图形
        {
            return Math.Sqrt(x * x + y * y) - r;
        }
        static double u(double x, double y, double t) //旋转 t°的 x
        {
            return x * Math.Cos(t) + y * Math.Sin(t);
        }
        static double v(double x, double y, double t) //旋转 t°的 y
        {
            return y * Math.Cos(t) - x * Math.Sin(t);
        }
        static double fa(double x, double y) //脸
        {
            return Math.Min(c(x, y, 0.5), c(x * 0.47 + 0.15, y + 0.25, 0.3));
        }
        static double no(double x, double y) //鼻子
        {
            return c(x * 1.2 + 0.97, y + 0.25, 0.2);
        }
        static double nh(double x, double y) //鼻孔
        {
            return Math.Min(c(x + 0.9, y + 0.25, 0.03), c(x + 0.75, y + 0.25, 0.03));
        }
        static double ea(double x, double y) //耳朵
        {
            return Math.Min(c(x * 1.7 + 0.3, y + 0.7, 0.15), c(u(x, y, 0.25) * 1.7, v(x, y, 0.25) + 0.65, 0.15));
        }
        static double ey(double x, double y) //眼睛
        {
            return Math.Min(c(x + 0.4, y + 0.35, 0.1), c(x + 0.15, y + 0.35, 0.1));
        }
        static double pu(double x, double y) //眼珠
        {
            return Math.Min(c(x + 0.38, y + 0.33, 0.03), c(x + 0.13, y + 0.33, 0.03));
        }
        static double fr(double x, double y) //腮红
        {
            return c(x * 1.1 - 0.3, y + 0.1, 0.15);
        }
        static double mo(double x, double y) //嘴巴
        {
            return Math.Max(c(x + 0.15, y - 0.05, 0.2), -c(x + 0.15, y, 0.25));
        }
        static double o(double x, double y, Func<double, double, double> f, double i) //判断是否为边界,并计算角度
        {
            var r=f(x,y);
            return Math.Abs(r) < 0.02 ? Math.Atan2(f(x, y + 1e-3) - r, f(x - 1e-3, y) + 0.3) * 1.273 + 6.5 :( r < 0 ? i : 0);
        }
        static double s(double x, double y, Func<double, double, double> f, double i) //计算是否是内部
        {
            return f(x, y) < 0 ? i : 0;
        }
        static double f(double x, double y) //计算 SDF
        {
            if (o(x, y, no, 1) > 0)
                return Math.Max(o(x, y, no, 1), s(x, y, nh, 12));
            else
                return Math.Max(o(x, y, fa, 1), Math.Max(o(x, y, ey, 11), Math.Max(o(x, y, ea, 1), Math.Max(o(x, y, no, 1), Math.Max(s(x, y, fr, 13), s(x, y, pu, 12))))));
        }
    }
}
weixin_40757263 2019-01-26
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
哪里???

putchar
c语言函数之一,作用是向终端输出一个字符。其格式为putchar(c),其中c可以是被单引号(英文状态下)引起来的一个字符,可以是介于0~127之间的一个十进制整型数(包含0和127),也可以是事先用char定义好的一个字符型变量。

就是这句话
putchar(".|/=\\|/=\\|@!"[(int)a]);

putchar我清楚是输出字符的意思,但是后面中括号中有一个整数表示什么意思?前面的".|/=\\|/=\\|@!"就只是表示一串字符串吗?
xuzuning 2019-01-25
  • 打赏
  • 举报
回复
一个二重循环,有什么可不懂的? 就算有不懂的地方,你也应该指出来
SoulRed 2019-01-25
  • 打赏
  • 举报
回复
那你也不能画一个代码给我们看啊。
你应该问美术方面的同志看看你画的怎么样
weixin_40757263 2019-01-25
  • 打赏
  • 举报
回复
先自己顶一下
xuzuning 2019-01-25
  • 打赏
  • 举报
回复
int main(int a ,char**b) 是 C 程序的入口函数 对应 C# 的 static void Main(string[] args) char** 是字符指针的指针,相当于 C# 的 string[]
weixin_40757263 2019-01-25
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
一个二重循环,有什么可不懂的?
就算有不懂的地方,你也应该指出来

1.主程序中int main(int a ,char**b)//这个我就理解为a是用户可以设置的值**b是什么意思呢?
2.外层的循环中可不可以理解为C#中的(但是b参数不清楚是什么意思)
for (double y=-1; y < 0.6; y += 0.05/a)
{
Console.WriteLine();
}

3.内层循环中的putchar就完全懵逼了···只知道那句话中的\\是用来画边缘的,C#中应该如何实现
更多项目进度详情分享:智能小车开源项目文章汇总 我们为什么要做这件事? 困境:“跪求指点”的菜鸟一年比一年多,有空搭理菜鸟的大神一年比一年少。 原因:很多时候不是大神不肯帮忙,而是各种零散、离奇、重复的问题,浇灭了他们“扶弱济贫”的心。 对策:电路城团队深谙两方的急迫和苦衷,作为一个技术交流平台应有的责任,于是有了《来实战》的栏目构想,即每期选定一个富有启发性和趣味性的开源项目,由硬件设计大神带队,引领一批自愿报名加入的同道爱好者,从项目分析、思路梳理开始,逐步完成动手实践、项目调试,直到最后的完美再现和更进一步的功能升级。我们期望,今天的新手菜鸟,能用自己的勤勉好学,得到大神更多的关注和指导,更快加入硬件高手的行列;我们也期望,受益于这个项目的人们,也将更愿意帮助那些陷入迷茫的曾经的自己。 支持:电路城的美国兄弟工程师交流平台hackaday(www.hackaday.com)和摩尔吧视频平台(https://www.moore8.com/)... 关于开源项目,我们计划这样来操作: 1.对标摩尔吧中的中相关主题智能小车项目(基于恩智浦平台智能汽车),我们这次用基于意法半导体的STM32平台来打造多功能智能小车,最终实物性能如何?基于意法半导体平台的智能小车PK恩智浦智能小车,谁更胜一筹?电路城开源项目组现在开始就通过逐步实操并最终打造出来,最后实物演示操作对比。此外,我们将预留资源,增加创意点的功能:红外或者超声波避障、摄像头、激光测距、舵机等等(到时根据实际进度会有一定取舍调整)。 2.项目更新进度:每两天在《来实战》栏目上更新设计进度内容,在工程没有实质性进度的时候也可以在论坛发帖分享进行实施困难点、设计技术难点和原理讲解及器件分析等。 3.建立对应项目讨论群。利用现有已建立的技术Q群资源,我们在做每一个不同主题方向的项目时,为方便讨论同时活跃Q群用户,欢迎更多志同道合的小伙伴加进来参加开源项目讨论或给我们提供建议。 4.采购设计工具 工具:电焊台(刀头、尖头)、焊锡丝、吸锡器、助焊膏、烙铁架子带夹子、松香、热熔胶枪、螺丝刀、万用表、剪钳、镊子、钳子、海绵、美工刀、元器件收纳盒、手持钻孔机等等,以后可以慢慢完善。示波器以及信号源、多功能电源。 元器件及材料:采购电子元器件以及打板。 5.我们会定期举办开源项目直播交流,或制作一些项目设计过程中的小视频,在项目交流群中与大家分享,感兴趣的小伙伴马上加入我们吧。 6.建立开源项目贡献者名单荣誉榜,不定期在本开源项目页面更新。项目结束后,对该开源项目贡献突出的小伙伴,我们评选出“开源之星”给予神秘大奖奖励。开源项目贡献者名单会被注明在最终的开源项目方案中。 7.期待更多的志同道合的技术大咖加入我们“开源项目智囊团”,出谋划策,为开源贡献自己应有的力量。 8.这是一个开源项目,项目最终会被分享上传到“电路城-电路方案”频道,供大家免费下载。 智能小车开源项目开发周期 计划2020.3.5~2020.4.30内完成。 项目主要有以下几个阶段(每个阶段我们还会就开发过程中遇到的一些有价值的开发难点或经验教训,以直播的形式在摩尔吧开播,具体主题和时间后期持续更新,感兴趣的小伙伴可以关注下哈~): 第一阶段:设计的要求及技术指标 -硬件系统(确定硬件设计思路,出总体框图,完成主要器件选型及相关资料查找); -软件系统(确定程序流程框图,查看相关示例程序,一般传感器、相关模块会给示例程序); -设计方案介绍(整体设计方案的介绍,以及相关方案的对比); -工作原理介绍及说明(介绍功能参数、方案原理、相关科普); 第二阶段:硬件系统设计 -硬件系统各模块功能介绍(所用到的功能模块、传感器、少见器件学习以及出文章介绍); -原理图、PCB图或仿真图绘制(完成原理图设计,需制作实物还需进行PCB设计); -元器件选型与BOM表(跟据原理图设计同步确定元器件选型,给出具体BOM表); 第三阶段:软件系统设计 -使用单片机资源情况(单片使用资源介绍,完成一些基础的讲解,还有相关芯片器件); -软件系统各模块功能介绍(各功能模块程序设计流程图,程序实现原理); -程序编写及清单(进行总的程序编写,以及初步调试); 第四阶段:实物制作 -焊接(待元器件集齐,打板完成,进行焊接以及相关结构制作,模型安装等); -软件调试; -硬件调试(结合软硬件调试,完成程序修改,确保功能实现,验证硬件部分没有问题); -设计结果分析(测试功能、验证相关参数,有什么不足以及改正,对做的不好的地方留时间补救); -测试过程(完整测试的发表,实测); 第五阶段:项目总结 -完成知识总结等收尾工作; -整理打包完整的开源方案所有资料; -开源项目突出贡献者名单公布及颁发奖品。

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧