关于一个类似贪吃蛇边界处理的问题 20C

本人在ubuntu下用ncurses库用一个结构体数组(里面只有坐标和身体char类型)去实现一个雅达利以前的蜈蚣游戏,但是遇到了问题,那个蜈蚣碰到墙了没有能拐弯,请问该怎么写一个碰到边界就向下移动一行且整个身体一格一格的移动?
结构体声明如下
typedef struct Centipede
{
int row,col;
char body;
}Cen;
Cen cent[10];
长度为10的蜈蚣碰到墙该怎么处理呢???
视频参考如下
(https://www.youtube.com/watch?v=dxoK8hosHjA )

4个回答

typedef struct Centipede
{
int row,col;
char body;
}Cen;
Cen cent[10];

不太清楚问的什么意思, 感觉可以加一个判断语句,如果蜈蚣的头下一次移动后会出界 就改变移动方向

判断蜈蚣头位置,是否挨着边界,如果挨着,就改变方向。。。。

可以定义一个头一个尾,移动时删除尾再添加头,头碰到边界就死

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于边界处理的问题?
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loadrn Dim pCtrl As New Buttonrn Me.Panel1.Controls.Add(pCtrl)rn AddHandler pCtrl.MouseDown, AddressOf MyMouseDownrn AddHandler pCtrl.MouseMove, AddressOf MyMouseMovern End Subrn Private Ox As Integerrn Private Oy As Integerrn Dim p As New Pointrn Private Sub MyMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)rn If e.Button = MouseButtons.Left Thenrn Ox = Control.MousePosition.Xrn Oy = Control.MousePosition.Yrn End Ifrn End Subrn Private Sub MyMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)rn If e.Button = MouseButtons.Left Thenrn CType(sender, Button).Left = CType(sender, Button).Left + Control.MousePosition.X - Oxrn CType(sender, Button).Top = CType(sender, Button).Top + Control.MousePosition.Y - Oyrn Ox = Control.MousePosition.Xrn Oy = Control.MousePosition.Yrn End Ifrn End Subrnrnrn上面是本人做的关于button在窗体上拖动的代码,怎么处理边界的问题,就是不让控件拖出窗体以外(拖出窗体空间不见了)。谢谢
请教一个关于贪吃蛇的问题
一直没有解决这个问题,就是随机产生一个食物,然后拿它的坐标和蛇头比较,但是第二次移动,食物的坐标就变成了固定的20,20。一直都没有办法让吃到食物返回truernrn[code=java]package org.sctbc.snake;rnrnimport java.awt.Graphics;rnrnimport java.awt.Point;rnrnimport org.sctbc.util.Global;rnrn/**rn * 食物rn * @author rn *rn */rnpublic class Food extends Point rn rn rn /**rn * rn */rn private static final long serialVersionUID = 1L;rn rn public void newFood(Point p)rn System.out.println(p.x+":"+p.y);rn rn this.setLocation(p);rn rn rn public boolean isSnakeEatFood(Snake snake)rn System.out.println("Food's isSnakeEatFood");rn rn System.out.println(x+":"+y+"\n"+snake.getHead().x+":"+snake.getHead().y);rn return this.equals(snake.getHead());rn rn rn rn rn rn public void drawMe(Graphics g)rn System.out.println("Food's drawMe");rn g.fill3DRect(x = Global.CELL_SIZE, y = Global.CELL_SIZE, rn Global.CELL_SIZE, Global.CELL_SIZE, true);rn rnrn[/code]rn[img=https://img-bbs.csdn.net/upload/201406/09/1402322698_712295.jpg][/img]
关于边界对齐的问题
边界对齐是什么?就是某种数据类型的存储地址有一定要求。对于计算机而言,理论上每个字节都可以用来存储数据,但是有些CPU或者由于什么其他原因,它们在读取数据时是按照对齐的方式来读取的。比如说,对于int型而言,intel默认是按照4字节的对齐要求来读取的。这样的读取可以在一个周期内完成。而如果不是这样的,那么可能需要2个周期或者更多时间来完成一个数据的读取。这也就解释了为啥需要边界对齐。但是我们在写C
关于指针边界的问题
有两个问题:rn1)为什么这样的指针初始化是不正确的rnint *p = 1,2,3;rnrn2)在执行过程中是否对指针的边界进行判断(数组不判断)rn如:rnchar *p="abcd";rnrnint len=0;rnfor (*q=p;*q!=NULL;q++)rnrn ++len;rnrnlen的最后的结果是4吗?我想应该是啊,可测试时不是,遇到p的null就应该结束的嘛
关于边界的问题
在css中边界的设置,可以在style当中选择一个选择器,然后通过选择器改变其中的边界。边界就包含了样式,颜色等等,那么都可以通过border-style border-color来进行设置,既然是有四条,那么四个就可以各不相同。 那么也可以选择特定的某个边:border-bottom-style或者 border-bottom-color等等。 样式,样色,宽度就这几个可以搞得地方。
关于边界扩展的问题
在平面图上有若干个点,点间连线形成一个多边形,将多边形的各边向外扩展150个单位,已知各点的坐标,如何求得扩展后的多边形各顶点的坐标?兄弟们,帮忙啊!
关于边界存储类型问题
我测试过,随便给一个vector类型赋值,然后用drawcontour画出来,都是按点顺序画出来的闭合多边形。同样是经canny边界探测,然后findcontour出来的vector类型,drawcontour为什么有不是闭合的。 n还有一个问题,明明看起来是闭合的边界,选择其中一个点用pointpolygontest测试结果确实不在其中,只有convexhull以后才能得到正确的结果。n忘大神解答
方块边界变形处理
关于内容rn本系列视频共43小节,每小节平均15分钟。rn代码主要基于C语言,少量win32编程。即使大家不会win32也完全不要紧,课程涉及到的win32,全部精讲,大家一定会有很大的收获。
自定义开关——边界处理
剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的完全自定义控件的方法
SlideMenu——边界处理
剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的完全自定义控件的方法
自动刷新的listview——边界的处理
剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的继承已有组件的方法
python 点边界处理
#encoding=utf-8 import json import math class Point(object): def __init__(self, x, z): self.x = x self.z = z def ToString(self): return "{ x:"+ str(self.x) + " z:" + str(self.z) + "}" def Eq
qtpDatatable-边界处理
QTP自动化随书光盘 Datatable-边界处理
一个边界类的问题
问题:在一个应用中,需要在页面(边界类)中输入一些信息,这些信息的一些是通过下拉列表(一些内容来自数据表--实体类)选择获得的,通过一个控制类对输入的数据进行处理后,保存在实体类中。请问在画类图时是否需要一个控制类为边界类中下拉列表“准备”数据?还是由边界类自身读取相应的数据表获得下拉列表中的数据?即一个实现用例的类图包括一个边界类、一个控制类、一个或多个实体类?
一个关于边界(margin)属性的问题
有如下代码:[code=HTML]rnrn 一个简单的页面框架rn rnrnrn rn logorn rn rn menu1rn menu2rn menu3rn rn rn rn rn sidebar1rn sidebar2rn sidebar3rn contentrn rn Information and copyright of this siternrn[/code]rnrnCSS代码rn[code=CSS]/*File Name: Layout.css*/rnrnbodyrn font-family:"宋体";rn font-size:12px;rn margin:0;rn color:#000;rnrnrnulrn margin:0;rn padding:0;rnrnrn#headerrn margin:0 auto;rn width:780px;rn height:70px;rn border:#333 1px solid;rn background:#999;rn padding:10px 0 10px 20px;rnrnrn.logorn width:70px;rn height:70px;rn border:#333 1px solid;rn background:#666;rn color:#fff;rn text-align:center;rnrnrn#menurn margin:3px auto;rn padding:0 20px 0 0; /*使用补白属性控制菜单精确位置*/rn width:780px;rn height:30px;rn border:#333 1px solid;rn background:#666;rnrnrn#menu ulrn float:right;rnrnrn#menu ul lirn float:left; /*定义列表同行显示*/rn list-style:none;rn height:20px;rn margin:4px 0 0 10px;rn border:1px solid #fff;rn color:#fff;rnrnrn#mainrn margin:0 auto;rn width:780px;rn border:1px solid red;rn background:#666;rnrnrn.sidebarrn float:left;rn width:150px;rn height:200px;rn margin:5px 0 5px 5px;rn background:#999;rn border:1px solid yellow;rnrnrn.sidebar ulrn margin:10px 0 0 20px;rnrn.sidebar ul lirn margin:5px 0;rn width:100px;rn height:24px;rn list-style:none;rn color:#fff;rn border:1px solid #fff;rnrn.contentrn float:right;rn padding:10px 0;rn width:610px;rn height:300px;rn background:#eee;rn text-align:center;rnrnrn#footerrn margin:3px auto;rn width:780px;rn padding:20px 0;rn text-align:center;rn background:#666;rn border:#333 1px solid;rn color:#fff;rn[/code]rnrn在网页中sidebar类的margin属性为5px 0 5px 5px;rn可是实际上显示时sidebar的左边界却有10px.rnrn这是怎么回事呢?是不是我有哪里没有注意到呢?
请教一个关于C++边界调整的问题
在看Inside the C++ Object Model的时候,作者讲到过C++边界调整的问题,就是原本一个占用5Byte的对象将其拓展到8Byte,一个9Byte的对象拓展到12Byte,那么我想问为什么1Byte的兑现不给拓展到4Byte呢?
关于贪吃蛇图片问题。
最近在研究贪吃蛇程序,想知道怎么引用网上找来的图片?因为我不会用VC或者VS画图。rn如果程序准确,那么我应该怎么上图呢?请各位牛人帮帮忙解答。
关于贪吃蛇的代码问题
我开始是用tc写了一个能自己移动的程序。下面是用c语言写的代码:rn /* Note:Your choice is C IDE */rn#include rn#include rn#includern#define LEFT 19200rn#define UP 18432rn#define RIGHT 19712rn#define DOWN 20480rn#define ESC 283rn#define N 150 rn#define gamespeed 50000rnstruct Snakern int x[N],y[N];rn int life;rn int length;rn int direction;rnsnake; rnvoid Init(void);rnvoid Draw(void);rnvoid GamePlay(void);rnvoid GameOver(void); rnvoid Close(void);rnvoid main()rn Init();rn Draw();rn GamePlay();rn Close();rn rnvoid Init(void)rn int gd=DETECT;int mode=0;rn initgraph(&gd,&mode,"d:\\tc"); rn rn rnvoid Draw(void)rnrn setcolor(4);rn rectangle(0,0,getmaxx(),getmaxy());rn rnvoid GamePlay(void)rn int i,key; rn snake.length=3; rn snake.direction=1;/*方向向右*/rn snake.life=0; rn snake.x[0]=50;snake.y[0]=50; rn snake.x[1]=55;snake.y[1]=50; rn snake.x[2]=60;snake.y[2]=50;rn while(1)rn while(!kbhit())/*在没有按键的情况下蛇身自己移动*/rn rn /*蛇身自己向前移的核心算法*/rn for(i=snake.length-1;i>0;i--)rn snake.x[i]=snake.x[i-1]; rn snake.y[i]=snake.y[i-1];rn rn switch(snake.direction) rn case 1: snake.x[0]+=10;break; /*向右*/rn case 2: snake.x[0]-=10;break; /* 向左*/ rn case 3: snake.y[0]-=10;break; /*向上*/rn case 4: snake.y[0]+=10;break; /*向下*/rn rn if(snake.x[0]<10||snake.x[0]>getmaxx()||snake.y[0]<10||snake.y[0]>getmaxy())rn GameOver();rn snake.life=1;rn rn if(snake.life==1) break;rn /*画蛇的代码*/ rn setcolor(4);rn for(i=0;i rn#includern#includernrn#includern#define LEFT 19200rn#define UP 18432rn#define RIGHT 19712rn#define DOWN 20480rn#define ESC 283rn#define N 150 rn#define gamespeed 50000rnstruct Snakern int x[N],y[N];rn int life;rn int length;rn int direction;rnsnake; rnstruct Foodrnint x,y;rn int yes;rnfood;rnvoid Init(void);rnvoid Draw(void);rnvoid GamePlay(void);rnvoid GameOver(void); rnvoid Close(void);rnvoid main()rn Init();rn Draw();rn GamePlay();rn Close();rn rnvoid Init(void)rn int gd=DETECT;int mode=0;rn initgraph(&gd,&mode,"d:\\tc"); rn rn rnvoid Draw(void)rnrn setcolor(4);rn rectangle(0,0,getmaxx(),getmaxy());rn rnvoid GamePlay(void)rn int i,key; rn randomize(); rn snake.length=3; rn snake.direction=1;/*方向向右*/rn snake.life=0;rn food.yes=1; /*要产生食物*/ rn snake.x[0]=50;snake.y[0]=50; rn snake.x[1]=55;snake.y[1]=50; rn snake.x[2]=60;snake.y[2]=50;rn while(1)rn while(!kbhit())/*在没有按键的情况下蛇身自己移动*/rn if(food.yes==1)rn food.x=rand()%500+40;rn food.y=rand()%450+40;rn if(food.x%10!=0) food.x++;rn if(food.y%10!=0) food.y++; rn food.yes=0;rn rn if(food.yes==0)rn setcolor(8); rn circle(food.x,food.y,5);rn rn /*蛇身自己向前移的核心算法*/rn for(i=snake.length-1;i>0;i--)rn snake.x[i]=snake.x[i-1]; rn snake.y[i]=snake.y[i-1];rn rn switch(snake.direction) rn case 1: snake.x[0]+=10;break; /*向右*/rn case 2: snake.x[0]-=10;break; /* 向左*/ rn case 3: snake.y[0]-=10;break; /*向上*/rn case 4: snake.y[0]+=10;break; /*向下*/rn rn for(i=3;igetmaxx()||snake.y[0]<10||snake.y[0]>getmaxy())rn GameOver();rn snake.life=1;rn rn if(snake.life==1) break;rn if(snake.x[0]==food.x&&snake.y[0]==food.y)rn setcolor(0); rn circle(food.x,food.y,5); rn snake.x[snake.length]=-20;rn snake.y[snake.length]=-20;rn snake.length++;rn food.yes=1;rn rn /*画蛇的代码*/ rn setcolor(4);rn for(i=0;i
关于数组边界和delete[]的问题
举个例子:rnchar* str = new char[256];rndelete[] str;rnrn在C++中 编译器可以知道指针指向的数组的大小和边界吗?rnrn在delete[] str 系统是怎样知道 指针 str 指向的数组有几个元素 并全部释放呢?
关于打印纸张边界设置的问题
打印纸张在程序里可不可以控制呀。给点代码。谢了各位大虾。
关于游戏中边界的问题?
我现在想写一个射击类的游戏,我是新人,我现在说一下我设计思路,高手给看一下是不是这样。背景图片是卷轴,不断的向下移动;飞机左右上下移动的(这样就属于两个图层了吧,在j2me中最多能实现几个图层,不影响速度的情况下)。但是边界应该怎么实现啊。是不是应该以飞机为中设定成一个矩形,只要碰到这个矩形就不能上进行上或下或左或右的移动了。不知道我这样说,大家明白吗?盼望高手的赐教!谢谢!
关于贪吃蛇几分的问题、、、、
在做贪吃蛇的程序。雏形已经做好了。想在界面上加个textfield控件来记分数。但是加了textfield空间后。keylistener()监听器似乎监听不到上、下、左、右键了。rn 求解决方法,相加积分器。您懂得
关于JFrame,Canvas边界的问题
比如说做一个贪吃蛇,如果直接划线的话,边界部分是回被标题栏之类遮住的,怎么在设置了jframe的指定大小后,在可见部分上来画线,比如定义格子WIDTH为30,行数ROWS为16,列为COLS是10,jframe的大小如何设置?还是WIDTH*ROWS,WIDTH*COLS的话 可见部分肯定画不出想要的图案了.解决这个问题有几种方法?jpane?canvas?rn哪位大神给个简单的代码.
hdu 2571 动态规划 边界处理
//做了几天动态规划,头一次想法正确了。但是卡在边界处理上,dp[1][1]一定要等于data[1][1](起点),一定要到达data[n][m]。 //所以第0行除了第一列外,其他都要等于无穷小,第0列除了第一行外,其他都要等于无穷小。 #include #include #include #include using namespace std; int dp[25][1005],data[2
soket消息边界处理细节
http或者udp具体怎么处理soket消息边界,简单的分析下代码就好,把道理讲清楚就行
TCP通信消息边界处理
本次系列课程的目标是让Unity3D初学者掌握Unity3d的网络开发技术,课程重点将对TCP数据通信时如何对数据进行序列化和反序列化,如何解析数据包等重要知识点进行深入探讨。
一个 关于加速贪吃蛇 移动的问题???
小弟 初学 vc,做了个贪吃蛇小游戏 但是有个问题rnrn我想在 在控制贪吃蛇移动是 可以让它向指定的防线移动rnrn比如说 按着 上健不放 就让蛇向上加速移动?rnrn请问该怎么实现 ?关键是怎么才能知道某个方向键是 一直按着不放的呢?rnrn我已经响应了 OnKeyDown()和OnkeyUp 但这两个的反应 都应该是 瞬时的呀?rnrnvc初学者 诚请高人指点 分数不多 见谅!!!
关于网上一个贪吃蛇讲解的问题
[url=http://v.youku.com/v_show/id_XMjY3Njg0NjQw.html][/url]rn在13分钟时 他说的没听明白rn说列表循环一对一代值,列表每次数据改变会自动刷新。。。rn这地方就没想明白,有没有大神你能帮忙解释下的rn万分感谢啊!!!!rn
arcpython设置处理边界extent
-
ArcGIS 编辑之公共边界处理
arcgis 解决面缝隙
地震波场边界处理的MATLAB实现
本文是地震勘探领域正演模拟初学者的一篇入门文章,介绍了边界处理以及matlab实现
等值线边界处理遇到难题
等值线边界处理问题。rnrn我用“离散点-->建立三角网-->插值-->追踪等值点-->B-SPline曲线拟合平滑”过程建立了等值线。等值线有封闭和不封闭两种情况。rnrn可有些曲线超过了边界,有些曲线没有画到边界就到终点了(因为插值点在三角网边上已经是终点)。rn如何处理边界问题?边界为由离散点连接成的不规则多边形。rnrn另外等值面如何填充。
等级分布图的边界元素的处理
《Quantifying the Visual Impact of Classification Boundaries in Choropleth Maps 》 这篇论文提出了一种新型的判断边界元素的改变对整个地图的显示影响的算法,这个文章把他提到的几个基本点整理了一下。
百度地图小区边界(轮廓)处理
最近,查了很多资料都没法在百度地图上画出小区边界,经过一番研究后,终于发现了一种方式。以下是demo的相关说明: 1. demo中小区相关信息查询是基于jsonp的方式处理 2. 使用百度地图需要申请AK,demo中使用的是我个人的申请的,如果demo打开没有效果可能是AK过期了 3. 因为小区轮廓百度没有公布相关API,demo中的接口有可能被百度关闭 4. 可能有的小区并没有相关轮廓数
关于一个类似Singleton的设计的一个问题
现在有一个模版:rntemplate class Templatetestrnrnprotected:rn static T* ms_Instance;rnpublic:rn Templatetest( void )rn ms_Instance = static_cast< T* >( this ); rn……rn;rnrn然后在一个dll中如此声明一个类:rnclass MY_EXPORT_API mytest : public Templatetestrnrn然后在一个程序中调用此类rnmytest* ptest = new mytest;rn会出现一个很奇怪的现象:rn在运行到ms_Instance = static_cast< T* >( this );的时候ms_Instance会是一个正确的值。但是当运行完mytest* ptest = new mytest;后,观察ptest的值会发现ptest中的ms_Instance为空rnrn请问:为什么会有这样的现象呢?rn
请问一个数组边界的问题
假如我有一个函数rnvoid aa(POINT *x ,int y ,POINT *z)rnrnrn其中x是要输入的数组起始地址,y也是输入的数据rn而z是要返回的数据起始地址,那我怎么才能判断x数组的大小,就是结尾???rn还有z值返回了,也只是一个指针,那外面的函数怎么判断z的结尾???rn是不是全部要附加数组的大小阿。。。???rnrn另外 a[6]和a=malloc(sizeof(char)*6)这个申请的数组是一样的吗???rna[6]可以用6个,还有一个a[6];rn后者也是不是有一个a[6]????
关于贪吃蛇的移动的一个想法
最近闲聊时突然说到贪吃蛇,贪吃蛇的身体是由多个格子拼接成的,在移动蛇的身体的时候,要把每一个格子移动到上一个格子的位置。 换一个角度,蛇在移动的时候,可以看作是,在最前面加一个body,最后面去掉一个body,中间的body不动。如果将所有的body放在一个list中,在每一次移动的时候,只需要在list最首位添加一个body,然后删除最末位的body,就完成了移动效果,这样不论蛇身多长,都不会...
一个关于处理日期的问题?
请问在oracle中如何求日期相减后得到的天数,例如:rndate recorddate,inputdatern求recorddate与inputdate相差的天数,如何来求?
一个关于处理系统消息的问题!
想用一个程序来监视系统的所有消息,如果有一个消息就把消息的名称放到Memo里面,然后再把消息交给系统处理。请问该如何作呢?请多指教!
一个关于字符窜处理的问题
编写一个程序要求用户输入一段文字,然后按照每个单词的开头字母对这段文字分类统计单词的数量并排序输出。例如,一次运行程序情况如下:rnPlease input a passage:rnThe topic of this assignment is about array, pointer and string. In particular, the goal of the assignment is to give you experience for dividing programs into modules and using the pointer for manipulation of string data.rnWords begin with t: 7rnWords begin with a: 6rnWords begin with i: 4rnWords begin with p: 4rnWords begin with o: 3rnWords begin with d: 2rnWords begin with f: 2rnWords begin with g: 2rnWords begin with m: 2rnWords begin with s: 2rnWords begin with e: 1rnWords begin with u: 1rnWords begin with y: 1rnrnTotal words: 37rnrnrn这道题应该怎么做?我做了一半做不下去了,请大虾们帮帮忙,小女子先谢了
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数