求贪吃蛇AI~

求贪吃蛇AI~,第1张

*要求改进:用图形模式表示print()函数*/

#include <mem.h>

#include <fcntl.h>

#include <conio.h>

#include <graphics.h>

#include <io.h>chin a i t p oe er . co mugTTCrI

#include <stdlib.h>

#include <stdio.h>

#include <bios.h>

#include <math.h>

#define N 50

#define Time 10000

int A[N][N]

int IE=6chin a i t p oe er . co mugTTCrI

int SCORE=0

char a[]="9999"

void *ball

int maxx

unsigned int sizechin a i t p oe er . co mugTTCrI

int head=1/*0,1,2,3*/

int i=3,j=0,ii=0,jj=0

int length=3

int x,y/*蛇头标志*/

int add=1/*食物标志*/

int tii,tjj/* 前蛇尾坐标 */

void start_image()

{

setlinestyle(SOLID_LINE,1,2)

setcolor(GREEN)

line(39,39,39,441)

line(39,441,441,441)

line(441,441,441,39)

line(441,39,39,39)chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}

void draw_image(int x,int y)

{

int i=x*400/N+40

int j=y*400/N+40

setfillstyle(1,4)

bar(j,i,j+400/N,i+400/N)

}

void eraser_image(int x,int y)

{

int i=x*400/N+40

int j=y*400/N+40

setfillstyle(1,0)

bar(j,i,j+400/N,i+400/N)

}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

void tu()

{/*tuxing jiemian*/

maxx=getmaxx()

size=imagesize(210,390,450,420)

ball=malloc(size)

setfillstyle(1,10)

bar(160,170,473,253)

setfillstyle(1,9)

bar(163,173,470,250)

setcolor(13)

outtextxy(200,200,"Welcome to Greedy Snake Game")

setcolor(14)

outtextxy(250,220,"Developer :Wu siyuan ")

outtextxy(290,240,"2003.5")

outtextxy(210,390,"Press any key to contunue...")

getimage(210,390,450,420,ball)chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

while(!kbhit())

{/* 没有键盘击键 */

putimage(210,390,ball,XOR_PUT)

delay(30000)

}

cleardevice()

}

void print()/*输出*/

{ /*要将转化成图形模式*/

int a,b

/*start_image()*/chin a i t p oe er . co mugTTCrI

for(a=0a<Na++)

{ for(b=0b<Nb++)

{if(A[a][b]>1)draw_image(a,b)

if(A[a][b]==0)eraser_image(a,b)}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}

}chin a i t p oe er . co mugTTCrI

void snake() /*begin*/

{

int a,b

for(a=0a<Na++)

for(b=0b<Nb++)

A[a][b]=0chin a i t p oe er . co mugTTCrI

A[i][j]=5A[i-1][j]=4A[i-2][j]=3A[i-3][j]=2

}

void del_tail()/*蛇尾的 *** 作*/

{

int number=A[ii][jj]

tii=iitjj=jj/*记录前蛇尾*/chin a i t p oe er . co mugTTCrI

while(1)

{

if(A[ii][jj-1]==number+1||A[ii][jj-1]==2&&number==30)

{jj--break}chin a i t p oe er . co mugTTCrI

if(A[ii][jj+1]==number+1||A[ii][jj+1]==2&&number==30)

{jj++break}chin a i t p oe er . co mugTTCrI

if(A[ii-1][jj]==number+1||A[ii-1][jj]==2&&number==30)

{ii--break}chin a i t p oe er . co mugTTCrI

if(A[ii+1][jj]==number+1||A[ii+1][jj]==2&&number==30)

{ii++break}chin a i t p oe er . co mugTTCrI

}

}chin a i t p oe er . co mugTTCrI

void down()

{

head=1

if(A[i+1][j]>1&&A[i+1][j]!=99)

{printf("I hit myself!")exit(1)}

i++

if(IE>30)IE=2

A[i][j]=IEIE++

del_tail()

A[tii][tjj]=0chin a i t p oe er . co mugTTCrI

}

void up()

{

head=0

if(A[i-1][j]>1&&A[i-1][j]!=99)

{printf("I hit myself!")exit(1)}

i--

if(IE>30)IE=2

A[i][j]=IEIE++

del_tail()

A[tii][tjj]=0chin a i t p oe er . co mugTTCrI

}

void left()

{

head=2

if(A[i][j-1]>1&&A[i][j-1]!=99)

{printf("I hit myself!")exit(1)}

j--

if(IE>30)IE=2

A[i][j]=IEIE++

del_tail()

A[tii][tjj]=0chin a i t p oe er . co mugTTCrI

}

void right()

{

head=3

if(A[i][j+1]>1&&A[i][j+1]!=99)

{printf("I hit myself!")exit(1)}

j++

if(IE>30)IE=2

A[i][j]=IEIE++

del_tail()

A[tii][tjj]=0

}chin a i t p oe er . co mugTTCrI

void test()/*测试是否到达边界*/

{

if(i<0||i>N-1||j<0||j>N-1)

{

printf("出界! Game over.")

exit(1)

}

}

void move()/*当前移动*/

{

switch(head)

{

case 0:up()break

case 1:down()break

case 2:left()break

case 3:right()break

/*default:printf("方向出错!\\n")*/

}chin a i t p oe er . co mugTTCrI

}

int keyboard()

{

/*判断是否有键盘输入

// 有返回值0,1,2,3

// int k=keyboard

//判断方向是否是有效方向

//无效则什么也不做

//若方向有效则改变head的值*/

int a,key,h

for(a=0a<2a++)

if(bioskey(1))break

key=bioskey(0)chin a i t p oe er . co mugTTCrI

switch (key)

{

/*up*/

case 18432:h=0break

/*down*/

case 20480:h=1break

/*left*/

case 19200:h=2break

/*right*/

case 19712:h=3break

/*Esc*/

case 283:printf("You press the Esc key!")exit(1)break

/*default: h=999 */chin a i t p oe er . co mugTTCrI

}

return h

}

void add_point()/* 用于产生食物 */

{chin a i t p oe er . co mugTTCrI

while(1){

x=random(100)%N

y=random(100)%N

if(A[x][y]==0)break

}

A[x][y]=99/*食物的标志是5*/chin a i t p oe er . co mugTTCrI

add=0/* 加食物标志清0*/chin a i t p oe er . co mugTTCrI

}

void score()

{chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

setcolor(9)

settextstyle(3,0,4)

outtextxy(450,40,"Score:")chin a i t p oe er . co mugTTCrI

setcolor(RED)

outtextxy(450,200,"Speed:")chin a i t p oe er . co mugTTCrI

}

void number_char(int x)

{chin a i t p oe er . co mugTTCrI

int a0,a1,a2,a3

if(x>9999){a[0]='9'a[1]='9'a[2]='9'a[3]='9'}

else {

a0=x/1000

a[0]=a0+48chin a i t p oe er . co mugTTCrI

a1=(x-a0*1000)/100

a[1]=a1+48chin a i t p oe er . co mugTTCrI

a2=(x-a0*1000-a1*100)/10

a[2]=a2+48chin a i t p oe er . co mugTTCrI

a3=(x-a0*1000-a1*100-a2*10)

a[3]=a3+48

a[4]='\\0'chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}

}chin a i t p oe er . co mugTTCrI

void snake_get()/*吃到食物时*/

{

if(i==x&&j==y)

{

length++chin a i t p oe er . co mugTTCrI

A[tii][tjj]=A[ii][jj]-1/*蛇尾加长*/chin a i t p oe er . co mugTTCrI

ii=tiijj=tjj/*蛇尾重新定义*/

add=1/*食物标志置1*/

setfillstyle(1,BLACK)

bar(520,100,650,140)/*clear score*/

setcolor(3)

number_char(SCORE+=100)

outtextxy(550,100,a)chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

void main()

{

int get_head/*定义键盘输入*/

int gd=DETECT,gm

clrscr()chin a i t p oe er . co mugTTCrI

/*regibgiobjdriver(public name)*/

initgraph(&gd,&gm,"c:\\\\bgi")chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

setbkcolor(BLACK)chin a i t p oe er . co mugTTCrI

tu()

snake()/*初始化*/

start_image()

score()/*定义分数界面*/chin a i t p oe er . co mugTTCrI

while(1)

{ while(bioskey(1)==0)/*是否有键盘输入*/

{chin a i t p oe er . co mugTTCrI

if(add)add_point()/*是否可以增加食物*/chin a i t p oe er . co mugTTCrI

print()

move()

snake_get()/* 是否吃到食物 (test)*/

test()

delay(Time)

}

get_head=keyboard()

/* choose */chin a i t p oe er . co mugTTCrI

while(1){/*判断得到的坐标是否合法*/

if(get_head==0&&head==1)break

if(get_head==1&&head==0)break

if(get_head==2&&head==3)break

if(get_head==3&&head==2)break

else {head=get_headbreak}/*合法给head赋值*/

}chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

1、CSDN:专业IT技术社区,包含原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务,其中有不少涉及低代码开发平台的内容,但是比较散乱,需要读者自行审视内容的质量;

CSDN社区

2、Teemlink:专业低代码开发平台技术社区,包含了低代码平台使用教程、低代码平台改进意见、低代码平台问题锦囊、低代码开发平台实施案例、低代码开发平台免费下载等技术交流和问题解决服务,会员人数超31000+,活跃度也比较高;

Teemlink社区

3、开源中国:开源技术社区,形成了由开源软件库、代码分享、资讯、协作翻译、码云、众包、招聘等几大模块内容,对于低代码开发平台主要以开源工程为主,因为没有大规模的用户测评,质量好坏也是需要读者自行把握;

开源中国社区

主要是这三大技术社区,如果有进一步发现我再更新。

问题一:程序员能自学吗? 首要之首:不要急于选择一种语言新手们有一个常见的错误就是犹豫于判断哪种编程语言是做好的、最该先学的。 我们有很多的选择,但你不能说那种语言“最好”。 我们应该理解:说到底,什么语言并不重要。 重要的是理解数据结构、控制逻辑和设计模式。 任何一种语言―甚至一种简单的脚本语言―都会具有所有编程语言都共有的各种特征,也就是说各种语言是贯通的。 我正在攻读我的计算机学学位,我编程使用Pascal,汇编,和C语言,事实上我从来没有把它当成职业以求获得回报。 我一直在自学编程,工作上用不到它,我使用现有的知识,参考各种文档和书本,学习它们的用法。 因此,不要急于选择何种编程语言。 找出你想要开发的东西,使用一种能够完成这项任务的语言,这就可以了。根据各种开发平台的不同,有很多不同的软件开发形式可供你选择:从网站应用到桌面软件到智能手机软件到命令行脚本工具。 这篇文章里,我将重点介绍一些很受欢迎的入门教程和资源,它们能帮助你学会如何在各种主流的平台上编程开发。 我先假设你是一个悟性很强的读者,但对于新手,当我谈论程序代码时还是要按照入门级的水平。 因为即使是你自己看一篇编程入门手册,如果发现都能理解时,心情自然会很高兴,这样利于你进一步学习。桌面脚本想要动手在Windows里或苹果系统里编程,最简单的方法是从一种脚本语言或宏语言开始,例如AutoHotkey(Windows) 或Automator(苹果系统)。 如今一些硬件程序员冲着他们的屏幕大喊大叫,说AHK和AppleScript并不是“真正”的编程语言。 也许他们说的是对的―技术上,这些种类的语言只能做一些上层的编程。 但是对于那些只是想来脱盲、想在他们的电脑里实现一些能自动运行的程序的新手来说,这些语言会是一个绝妙的入门入口―而且你会吃惊于它们丰富的功能。例如,大家都喜爱的Texter就是Adam使用AutoHotkey开发的能独立运行的Windows应用程序,所以说这种脚本语言远不是只能开发小规模脚本软件。 如果你想从AutoHotkey入手,可以参考Adam的指导:how to turn any action into a keyboard shortcut using AutoHotkey(然后,你可以下载Texter源代码看看这个功能齐全的使用AHK开发的Windows应用程序的内部结构)。Web开发HTML 和 CSS:开发网站,你第一件要知道的事情就是HTML(网页就是由它组成的)和CSS(一种让外观更好看的样式标记)。 HTML 和 CSS 并不是编程语言―它们只是页面的结构和样式信息。 然而,在开始开发web应用程序之前你必须要学会如何手工的编写简单的HTML和CSS,web页面是任何webapp的前端显示部分。 这个HTML 指导是你入手的好地方。JavaScript:当你可以通过HTML和CSS构建一个静态页面后,事情就开始变得有趣了―因为到了该学JavaScript的时候了。 JavaScript是一种web浏览器上的编程语言,它的魔力就是能在页面里制造一些动态效果。 JavaScript可以做bookmarklets,Greasemonkey脚本, 和Ajax, 所以它是web上各种好东西的关于因素。学习JavaScript从这里开。服务器端脚本:一旦你学会了网页里的知识,你就要开始对它添加一些动态服务器 *** 作―为了实现这些,你需要把目光转移到服务器端脚本语言,例如PHP, Python, Perl, ......>>

问题二:如何自学成为初级程序员 [经验之谈]30岁,我的程序,我的梦!

程序人生 : 30岁,我的程序员梦想

作 者: redbridge (雪燃)

30岁,开始实现我的程序员梦,从一个编程爱好者,从一个业余的程序员,一个水平不高的程序员,一个半道出家的程序员......

我的经历到这里就告一段落了,五年里跳了五次槽,不知道和大家比算不算多J,没有什么太多起伏,但我想很多朋友可能会和我有类似的经历,不知道能不能引起你们的共鸣。我想对我上面所说的话给一个总结:

1. 如果你觉得自己应该追求什么,不管遇到什么困难千万不要放弃,一定要坚持下去。

2. 不要因为自己年轻就找理由挥霍时间,少玩一点SC、CS、魔兽3、传奇、魔力或者…….,多看点书,多练练题。

3. 如果你还是在校的学生,英语很差,专业课也很差。没关系,想怎么学计算机就怎么学计算机吧。其它地只要能混到毕业证就行了。除非你对自己的未来没有信心。(当然,如果你的理想不仅仅是要做一个程序员,那你别丢掉英语。)

4. 如果你不是科班出身,想要转行而不知该怎么开始的话,建议你先看两类书:(1)计算机原理;(2)数据结构和算法。(看数据结构之前先看C语言)。

5. 什么时候努力都不晚,关键是你明白要努力了,大器晚成总比一事无成要好的多。

6. Java、、C++、PB、VB、Delphi、汇编到底应该学哪个?我的经验,哪个最简单就先学哪个、公司用哪个你就学哪个、哪个和你有缘(比如刚好你认识一个愿意帮助你的Delphi高手)你就学哪个,如果你都学,或者三天两头的换,我可以告诉你结果肯定是什么都不会,不要心浮气燥,他们都只是工具,学精一门其它的就相通了,重要的是掌握编程的思想。如果你问我面向对象(好像现在已经是面向需求了)、UML、WebLogic、WebService、软件工程、XML…….应该怎么学呀,对不起,这些我也确实不是都会,但请相信,你先实实在在的写上十万行以上的代码以后,那些东西你自然就慢慢会了。

7. 不要以为程序员的工资都很高,程序员之间的水平差异也大。公司衡量一个人的待遇标准是他能给公司带来多大的效益。如果你体现了自己的价值,公司会主动给你加薪的,当然你也可以自己主动提,但一定要在你表现出了自己的价值之后。

8. 轻易不要跳槽,如果非要跳,也要保持工作经验上的延续,而不是从新开始,不然就会象我一样走很多弯路。

9. 如果你以为程序员都是熬夜熬出来的,那么你错了,因为它的代价就是缩短你的青春!大家不要象我一样,真的,熬夜一点也不好!记住老毛的话:如有恒,何须三更起,半夜眠;最怕莫,三天打鱼两天晒网,竹篮打水一场空!

10. 这一点是我觉得最精华的一点:“君子性非异也,善假于物也。”这句话的本意是一个水平很高的人本身并不一定很高明,关键是他善于利用别人的高明!我在这里做个借鉴,就是要充分利用自己身边的资源,不放过任何一个可以提高自己的机会。大家不要误会,这里的假于物可不是指抄袭别人的源代码,而是指通过学习别人的源代码把他的思想扩展到自己的思想里去。

注:上面的十大“精华”纯属我个人的“谬论”,您自己看着消化,有用的收下,没用的请拖入“回收站”。如果你觉得这些总结不过是一些浮华之词,那请你先问问自己:“是不是在行动上都真正做到了。”

这就是我,一个不算优秀,不算勤奋;玩能玩通宵,学也学能学通宵;对梦想的追求很执着;到了30才开始真正写程序;一个很平凡但又不甘于平凡的人……我的经历相信很多朋友都有过的,我现在也不能算是一个成功人士,但我相信我的经历却是值得大家借鉴的,因为我终究代表了一类人......>>

问题三:自学程序员需要多长时间 自学程序员,难不难要看你肯不肯多花时间在上面,有很多方面要涉及,对于编程语言更是需要你多实践多上机,才能有所收获,当然如果你很喜欢编程的话,你也会发现编写程序也是一件很有乐趣的事情,完成了也很有成就感。当然,要考程序员,光编程还是不够的,畅需要涉猎计算机相关方面的知识

问题四:能自学程序员吗 10分 可以,自学的话有些问题可能理解的慢也不透彻,找个老师或者培训一下,就会比较全面,少走很多弯路

问题五:有靠自学成为程序员的吗? 还是有那种人的,说实话吧,做程序员本来就是枯燥无味的,更何况是自学,自学的效率不高,本来一个问题也许要很久搞懂。给你的建议,可以去正规的培训机构学习。若自学,网上找些视频教程等学习资料,加些编程的论坛qq群,有助于学习交流,一定要坚持,愿你学而有成!

问题六:程序员是不是特别难学啊?没有基础的自学可以吗?前景怎么样,是不是特别累? 嗯,不懂肯定就难,难在入门而已,有基础就非常好学,没有基础靠自学是非常难得。

问题七:如何成为一名程序员? 首先先选择一门语言 现在比较火的是sun公司的java 和微软的C#

友情提示:java移植性很好,这是网络平台所需要的。C#只能运行在微软的平台,有局限性。

我不排斥其他的计算机语言 不过一般只要学懂一门语言后就相当进入程序的天堂,在学其他的语言时候就能简单的多,因为很多软件语言是相同的,学懂一门就能够看懂其他的。

买书,见意买比较薄的书开始学,太厚的书看不完会打击心灵。

需要有耐心,其实是非常有耐心,因为学软件做软件是一辈子的,没有任何一门技术能做到老,必须一路学下去。每当度过一个阶段尽量总结所学过的。

一定要沉得住寂寞,无论是学软件还是做软件。

只要认真学,一般一年自学都可以有所小成,程度还要看个人的领悟。

做软件是需要注意很多细节,正是这些细节所以让人很头疼,所以需要耐心。

顺便提一句:学软件就尽量学比较火的,因为市场需要,才会火。

我不是鄙视某某某语言,而是实话说,毕竟学出来需要应付工作的,如果工作不需要,就算学的很有本事,没人雇也没用,对吧!

你完全可以去招聘网看看软件这个行业哪些软件需要的人才多。

别听谁谁谁说哪种语言火,火不火招聘的数量就能说明一切。

一定要对软件充满信心,千万别轻易放弃。相信软件是有“钱”途的。

本人现在也是在自学软件,也有三年的学习。

以上是我一些经验,如果有需要,可以按右下角Hi我,相互促进。

问题八:大神们,程序员自学成才,靠谱吗 我所认识的绝大多数NB的程序员,都是自学的,包括我本人也是,也暂时没有看到哪个达人是培训出来的 另外,关于大学的计算机专业,在大学学习计算机术科的同学们只比普通的同学多了一点优势,就是有很多机会去学好扎实的理论基础,但是他们通常没有珍视这个机会

问题九:26岁零基础还可以做程序员吗? 可以

问题十:自学程序员要多久 你要是一点基础都没有的话,你学PHP什么的看视频只要努力几个月就可矗学会了,如果自学JAVA,C++的话就不用想了,我大学上课听都听不懂,虽然我也不想学,但有老师比没老师至少要好多了。如果有一点基础的话,PHP这种弱语言类型也很容易学的,大概就一两个月就可以了。但没有努力再想学也是白搭,而且能看懂学会也不代表会用,程序最重要是会用,这个实践是最好的老师!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7973687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存