2019/02/07
我记得我年前的时候,我看过很多文章,包括一些论文,主题都是利用AI来玩贪吃蛇这种。他们利用的方法很多,例如利用搜索算法[1],还有利用监督学习来进行训练达到目的的,训练数据的来源是有自己玩游戏产生的(好像有算法是可以让他自己产生的,想不起来是在哪里看到的了。),当然这种正如他自己所说,后续的结果就是机器最多玩的和你一样好,最后一种见的比较多的就是利用强化学习,加上Q-Learning算法的方式。 针对搜索算法部分,可以看前面的一篇随笔《贪吃蛇游戏》。
那段时间看了不少这类的文章,我现在集中阅读一下,并简单理解一下这部分内容的关键部分。无论什么游戏,都有一个 相应的状态空间 的定义,这部分数据,本质上就是这个游戏能展现给我的所有的内容。那么怎么来利用这部分数据,就是你的能力了。
文章[2]中,他是用的方法同时结合了深度学习和强化学习。 (我也想深究一下,如果是仅仅使用强化学习,这个过程又是什么样的,得看我收集的文章中,是不是有这类部分的内容了;我记得好像强化学习就是利用Q-Learning这种算法来实现的) 但是这篇文章感觉说的不够清楚,最重要的那个点就是,强化学习到底是如何跟深度学习联合起来的。可能单单强化学习已经可以完成这个任务了。 我大概理解了这个过程,他是利用强化学习来作为自动化生成数据的过程了,一开始的时候,利用强化学习尽可能得到多的数据,然后采样或者怎么样使得最后的数据作为训练得到效果。 这篇文章讲述的并不是清楚,不推荐。 下面这个图从这篇文章中看到的,挺不错。
文章[3]基于强化学习Q-Learning完成了贪吃蛇的步骤,不过貌似他的这个效果并不是非常好。整个部分的源码他都是利用js来完成的, 讲解部分比较基础, 回答了前一小节的疑问。
本篇文章中,他介绍的另外一个内容挺不错,就是利用神经网络来玩谷歌浏览器的游戏。
文章[5]利用深度学习和遗传算法来训练玩游戏;这部分的文章一系列的内容,从使用pygame设计游戏,到后面自动化产生数据,最后使用GA+ANN直接不需要数据。他的思路 跟前面强化学习是不一样的。 前面部分讲到了自动化产生训练数据的部分,这个部分我感觉讲解的并不是非常好,他的自动化并不是说让游戏自己去探测这个各种内容。反而是根据某种公式来计算角度,最终实现这个过程。后续GA算法的时候又说道可以不是用训练数据。 他利用GA算法应该是使用了两个部分,第一个就是直接使用GA进行训练,他的适应函数(fittness function)部分,类似强化学习的部分,产生奖励和惩罚机制。第二个就是使用GA算法来选择神经网络的架构。 (这部分我也不是很确认,有点没看懂他要干什么) 对于神经网络中的权值部分他是如何进行实现的,这是我的一个疑问。 GA算法到底针对的是哪一部分的内容。这种文章还是有一定缺陷的。GA算法是两部分内容,首先就是权值更新内容。 虽然这篇文章感觉很基础,但我觉的写的不好。
利用学习的办法实现玩游戏的目标,比较重要的问题,有以下几个。
[1] Hawstein,如何用Python写一个贪吃蛇AI [2] 如何让AI玩贪吃蛇:深度强化学习 [3] 利用强化学习玩贪吃蛇 [4] 谷歌小恐龙 [5] 深度学习与贪吃蛇
程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)程序结构(流程图) 图流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。生命就只有两种情况:死或生,对应0或1。食物: 基本描述:颜色,位置。对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。图蛇的不停运动的关键算法的流程图各模块的功能及程序说明主要模块的实现思路和算法的流程图说明:关键所在——蛇不停移动的Snakemove():蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标对应一节的位置,假设有i+1节,由0到i节,第i节的坐标取第i-1节的坐标,第i-1节的坐标取第i-2节的坐标……直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。 程序结果运行程序得到如下初始界面图: 图程序结果图用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示: 图程序结果图蛇没有碰到自己或墙壁,蛇继续前进: 图程序结果图游戏结束时,显示“GAME OVER” 图程序结果图程序源代码及注释#define N 200#include <>#include <>#include <>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food{ int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{ int x[N]; int y[N]; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){ Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/}/*图形驱动*/void Init(void){ int gd=DETECT,gm; registerbgidriver(EGAVGA_driver); initgraph(&gd,&gm,"c:\\program files\\winyes\\tc20h\\bgi"); cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=600;i+=10)/*画围墙*/ { rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i<=450;i+=10) { rectangle(50,i,59,i+10); /*左边*/ rectangle(601,i,610,i+10);/*右边*/ }}/*玩游戏具体过程*/void GamePlay(void){ randomize();/*随机数发生器*/ ;/*1表示需要出现新食物,0表示已经存在食物*/ ;/*活着*/ ;/*方向往右*/ [0]=100;[0]=100;/*蛇头*/ [1]=110;[1]=100; ;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if()/*需要出现新食物*/ { ()%400+60; ()%350+60; while(!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ ; while(!=0) ; ;/*画面上有食物了*/ } if()/*画面上有食物了就要显示*/ { setcolor(GREEN); rectangle(); } for(i=;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { [i]=[i-1]; [i]=[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch() { case 1:[0]+=10;break; case 2: [0]-=10;break; case 3: [0]-=10;break; case 4: [0]+=10;break; } for(i=3;i<;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ { if([i]==[0]&&[i]==[0]) { GameOver();/*显示失败*/ ; break; } } if([0]<55||[0]>595||[0]<55|| [0]>455)/*蛇是否撞到墙壁*/ { GameOver();/*本次游戏结束*/ ; /*蛇死*/ } if()/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if([0]==[0]==)/*吃到食物以后*/ { setcolor(0);/*把画面上的食物东西去掉*/ rectangle(); []=-20;[]=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ ;/*蛇的身体长一节*/ ;/*画面上需要出现新的食物*/ score+=10; PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i<;i++) rectangle([i],[i],[i]+10, [i]-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一节*/ rectangle([],[], []+10,[]-10); } /*endwhile(!kbhit)*/ if()/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key==ESC)/*按ESC键退出*/ break; else if(key==UP&&!=4)/*判断是否往相反的方向移动*/ ; else if(key==RIGHT&&!=2) ; else if(key==LEFT&&!=1) ; else if(key==DOWN&&!=3) ; }/*endwhile(1)*/}/*游戏结束*/void GameOver(void){ cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();}/*输出成绩*/void PrScore(void){ char str[10]; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str);}/*图形结束*/void Close(void){ getch(); closegraph();}第3章 课程设计总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之 后,我们把前面所学过的知识又重新温故了一遍。我做的是做贪吃蛇游戏。简单的一个,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过 程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
写单片机贪吃蛇游戏毕业设计开题报告文献综述方法如下。1、文献综述,研究思路研究方法及手段。2、参考文献进度安排。3、文献综述是开题报告中的最重要部分。
大一的时候,最是闲着慌的时候,也最是喜欢尝试新鲜事物。看到舍友玩什么,也喜欢过去凑凑热闹。所以就入了一阵贪吃蛇的坑。因为他们称我“老船长”,那我就索性给我的蛇起了个名字叫“大宝老船长”。 然后,我看我自己的蛇哪都可爱,哪都好。从此,带着它踏上了一条大杀四方的不归路。历经沙场之后,不知怎么的,竟然觉得我的“蛇生”竟然有些“人生”的映射啊。如果感兴趣的,不如耐着性子来听我“鬼话连篇”一番?反正作者的个人简介也是有“最喜欢鬼话连篇”的介绍嘛。 当自己一开始还是一条小蛇的时候,危险比较大。因此, 没有实力的时候不要轻举妄动 。如果到蛇群密集的地方,很容易因为贪心被干掉。比如被撞或被圈住。 因为圈住别的蛇这件事情是我在变成大蛇以后常做的事情,所以很有经验。你若害人,人也能以牙还牙。所以,乖乖的远离蛇群,定心吃,慢慢积累实力。 《三国》里刘玄德不就是如此吗? 心知肚明自己的实力还斗不过曹孟德之后,宁可每天在菜园子里种菜浇花。还不是为了韬光养晦吗?而不至于羽翼尚未长成就因为自己的鲁莽草率,不够稳重而丢了卿卿性命。如果那个时候刘备就跟人间say goodbye了,那么三分天下也就没有他姓刘的影子了。 后来,越变越大,就可以用圈住小蛇法。不过还是尽量避免蛇群密集抢食的地方,时刻要保持警惕,以免不测。因为自己实力变强,就可以把食物圈在身体内侧慢慢吃。而不是贪心的顺着食物吃,不然很有可能与从另一头觅食的蛇撞上,以至死亡。还有就是有时候会有保护圈。但在里面的时候的确安全,但也行动迟缓。刚出保护圈的时候,一时也恢复不过来。这里也看出依赖会影响独立的适应能力。 所以说,有利有弊,有得必有所失。还有,不要以为有了保护圈就可以为所欲为的进入到危险境地,因为保护圈的效益是暂时的。所以,不是凭真本领不要张扬冒险,无实力者,大可作壁上观,敌不动我不动,冷眼看他人厮杀,坐收渔翁之利。“温水煮青蛙”,就是不懂“生于忧患,死于安乐”的道理啦。但这幅漫画反映的内涵就更加深刻了,很多人是身居高位、要职,却被贪污腐败诱惑着,逐渐麻痹了神经。 多少巨贪是起于小贪念的呢? 一念成佛,一念成魔呀。 我们普通人“生于安乐”的结局可能是一生碌碌无为,却还安慰自己平凡可贵。最多就是蹉跎了自己的岁月光阴,可是名利场上的“温水煮青蛙”,搞不好是要去监狱里“喝茶”的。倒时候,就是身败名裂,金钱名利就统统成了过眼云烟,仿佛做了一场梦了。 别的蛇跟你抢食,有的时候也别心急,它增加了它的长度之后,你冷眼旁观一会儿,再找时机攻击它,那你就直接坐收渔翁之利了。这样子你就把它还有之前它吃的那条蛇一起吃了,还省了吃那条蛇的功夫。何乐而不为呢。还有时候,别的蛇自相残杀,我的大宝老船长就等着坐收渔翁之利。 当然,我们在这里所说的坐收渔翁之利并不是说我们为了要获利,要达到某种手段而故意挑起前两者的事端,这就十分缺德了。而是有些“守株待兔”的意味。就像那个渔翁一样,只是遇见了一种机遇。看到某些时机成熟之后的把握。 一定要看清楚,快!准!狠!不然过了这个村还就没这个店了。 当然,在当今社会,同样流传着一句话叫:机遇只留给有准备的人的。因为咱们也不是人人都是那个渔翁,所以要好好努力啊。 就拿写作这件事情来说,我写,是因为我喜欢,是因为我希望我的文字是我认真思考感悟的结晶。我为的是无愧于心。那我肯定也是希望在这条路上可以获得与更多的朋友交流的机会的。 那么为了有这个机会,我现在所要做的就是听从自己内心的声音坚持不懈下去。说不定哪天我就收获更多的好朋友,心想事成了嘛。 大宝老船长越变越大,越变越长的时候,不能骄傲自满,目空一切。很多时候,大宝老船长会在这时候被毫不起眼的小蛇干掉,因为大宝老船长掉以轻心了。所以说,无论实力有多强,还是要时刻居安思危哟。 我们不应该学着夜郎国那样夜郎自大,没见过世面,就以为自己区区弹丸小国就是全宇宙了。我们做人,妄自菲薄,狂妄自大都是不可取的。谁让一桶水不响,半桶水叮当呢。 而且,骄傲自大,牛皮吹破了是很尴尬的一件事情。 我想我们很多“狂妄”的初衷就是希望更多人仰慕自己,这其实是过度的渴望自尊在作祟。可往往,“狂妄”的做法是适得其反的,反而是让更多人即便给你表面上的恭维,实则却在心底暗自发笑,甚至希望有朝一日能对你“落井下石”。 所以,真正在乎自尊这件事情,就谦虚低调一些吧。 就是把你蛇的皮肤搞得恶心一点,这样子别人可能嫌你恶心就避着你。前提是你自己不觉得恶心。 当然,这个也不是所有人觉得你恶心就避开你的,但是我会的哦。 也就是说可以兵不血刃,在气势上已经完全碾压对面,都不费一兵一卒。 那么在今天,我们就不说“碾压”,我们说“征服”,或者说“使别人认可”。那就要提升自己的形象和内在的涵养。 形象上面,把自己打理打理好,要让人一看就觉得干净舒服。 至于内在气质方面,是很重要的。要表现得识大体,有绅士风度。更多的还有体现在言辞谈吐上面,这就需要一个人有很好的内涵与积淀。不过多读一些书是很有帮助的,毕竟有句话是“腹有诗书气自华”嘛。从书本上可以学过来很多东西转换到举手投足间,提升个人品味。 障眼法迷惑,就是当你很大很长的时候,游到跟你一样的蛇面前,让它以为你的身体就是它的身体,然后趁机杀死它。这有点像变色龙,不过变色龙是自主去适应环境。比如变成绿色躲在树叶丛中为了避免被天敌发现。 当然,我们不要像游戏里那么“血腥暴力”啊,我们需要学到的应该是像变色龙那样学会“伪装”保护自己。 很多时候,我们确实不能让环境改变着来适应我们,而是应该主动去适应环境。 当然,很多时候去适应环境并不是说我们甘于现状了,而是低调地养精蓄锐,分析时机,利弊。 我很喜欢一个在上看到的 “SWOT”分析法 。做事情要提前分析好“strengthes(长处)”,“weaknesses(劣势)”,“opportunities(机遇) ” ,“threats(威胁)”。 当然,这跟大宝老船长伪装着杀小蛇是有异曲同工之妙的,虽然一个看上去“很歹毒”,而另一个看上去很“无公害”。但其实都是可以获得好处的。 发现大宝老船长越变长越变大,行动得越慢。 所以说,实力地位越强,其实压力责任担子越重了。 我很喜欢《星际特工》这部剧。缪星人铭记历史,却忘记仇恨。既往不咎,好大度。告诉人类要珍爱和平。 那个人类指挥官却是大坏蛋。果然很多大boss都是看似正经人,却是为了自己利益的幕后黑手。也是这种剧的一般套路。他就没有做到位高权重,反而是滥用私权,不仅不承认错误,反而为了掩饰错误更加滥杀无辜。 而这种人如果做坏事情,破坏力影响力会更大的啊。所以希望人们可以在其位,谋其政吧。 蛇在增速的时候,会消耗一点自己本身的长度。但是有的时候,抢尸体时要出手,只要拉出来一点点就可以收获很大的增速。慢悠悠的不仅慢可能吃不到,争夺过程中被干掉的可能性又加大了。 说起“舍得”二字,我第一个想到的是寒山和拾得之间的这一段经典对话。 这也就是目光长远,懂得取舍了。就和大宝老船长一样,做点小牺牲是为了收获更多的东西。就像不去计较一些诽谤之词,收获的是一份安宁的心境。而这份安宁的心境对自己的身心健康都非常重要。 反之,如果去过分计较,就算在口头上有时候能占些便宜,可终究有一股郁结之气在胸中难以排解。既伤人又害己,何必呢? 所以,“取舍”、“取舍”,目光放得长远些,不要总看眼前的一时吧。 躲在角落里看激烈争夺必有伤亡,到时候如果吃不到全部的,有残羹冷炙也是能分到点的。 你看,连君王治国都要用上这个道理,更何况是咱们普通人呢。知足常乐,云淡风轻,其实是一种我们应该提倡的生活高姿态。这样子人就不会总是被欲念所扰,总是为了一些求而不得的东西绞尽脑汁,煞费苦心。 很多时候,应该学会享受当下。因为,生命实在是太宝贵了,我们应该用一颗平常心去生活。这样,才更有可能和一些有趣的灵魂相遇。 不管我选择偏安一隅还是奋勇向前,大宝老船长总该学会保护自己的。不过,只偏安一隅,会有人杀你;只急躁冒进,会自己被自己杀死。所以,还是随机应变哦。 比如欲擒故纵,还不抢食,把尸体放在自己身边等别的蛇吃,那么那条蛇一心急,它可能就撞死在你身上了。 还有的时候,是因为自己让自己撞墙而死。所以说,很多时候自己也会是被自己“作死”的。 我们随机应变的有很多东西,比如心态行动什么的,都要根据自己的处境好好考虑的。一成不变、墨守成规在这个时代里很容易吃亏。 比如你恋爱了,那么就要学着去与对方相互磨合,为你爱的那个人改变一下自己;比如你工作了,就要去与上司同事融合关系,争取“双赢”的局面…… -END- 最后总结:“蛇生”如“人生”,这是一个光怪陆离,充满着各种复杂的世界。所以,好好把握哦。 卿慕 ,一个间接性踌躇满志,持续性混吃等死,具有多重人格的作者。
138 浏览 3 回答
232 浏览 3 回答
332 浏览 4 回答
139 浏览 3 回答
101 浏览 4 回答
246 浏览 4 回答
196 浏览 7 回答
113 浏览 7 回答
129 浏览 3 回答
224 浏览 2 回答
105 浏览 4 回答
91 浏览 3 回答
337 浏览 5 回答
269 浏览 4 回答
119 浏览 3 回答