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

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

1

4个回答

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

2

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

0

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

0

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

0
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在窗体上拖动的代码,怎么处理边界的问题,就是不让控件拖出窗体以外(拖出窗体空间不见了)。谢谢
最大子数组问题的边界处理
暴力法--O(n^2) def max_sum(A): sums=[0]*(len(A)+1) for i in range(1,len(A)+1): sums[i]=sums[i-1]+A[i-1] #sums[i] is sum[0,i) so sums[i]-sums[j]=sum[i,j) left,right,sumval=0,0,0
关于对Rectangle的边界处理
今天很奇怪地发现一个问题,现象是: 1. 当采用一个与Rectangle无关的box作为ROI缩放时,需要用 Org.left = ROI.left + ROUND(Zoom.left*fInvW); Org.top = ROI.top + ROUND(Zoom.top*fInvH); lOrgW = ROUND(lZoomW*fInvW); lOrgH = ROUND(lZoomH*f
关于集合操作边界处理的设计
原创:dlite@163.com 在设计或实现某种集合的时候,经常会遇到集合边界值的情况。例如,从集合中取一个元素,必须得考虑这个集合是否非空;向一个有限集合添加元素,必须考虑集合满的情况。 而对于包含异常处理的编程语言来说,如果遇到集合操作边界,我们常见的编程约定有两种: 一种选择是将边界条件作为异常来处理。如下面处理集合为空的代码。 代码1:     Collectio
请教一个关于贪吃蛇的问题
一直没有解决这个问题,就是随机产生一个食物,然后拿它的坐标和蛇头比较,但是第二次移动,食物的坐标就变成了固定的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]
关于边界扩展的问题
在平面图上有若干个点,点间连线形成一个多边形,将多边形的各边向外扩展150个单位,已知各点的坐标,如何求得扩展后的多边形各顶点的坐标?兄弟们,帮忙啊!
关于边界存储类型问题
我测试过,随便给一个vector类型赋值,然后用drawcontour画出来,都是按点顺序画出来的闭合多边形。同样是经canny边界探测,然后findcontour出来的vector类型,drawcontour为什么有不是闭合的。 n还有一个问题,明明看起来是闭合的边界,选择其中一个点用pointpolygontest测试结果确实不在其中,只有convexhull以后才能得到正确的结果。n忘大神解答
关于边界对齐问题
关于边界对齐问题1. 1. struct的巨大作用  面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的
关于边界对齐的问题
边界对齐是什么?就是某种数据类型的存储地址有一定要求。对于计算机而言,理论上每个字节都可以用来存储数据,但是有些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等等。 样式,样色,宽度就这几个可以搞得地方。
一个边界类的问题
问题:在一个应用中,需要在页面(边界类)中输入一些信息,这些信息的一些是通过下拉列表(一些内容来自数据表--实体类)选择获得的,通过一个控制类对输入的数据进行处理后,保存在实体类中。请问在画类图时是否需要一个控制类为边界类中下拉列表“准备”数据?还是由边界类自身读取相应的数据表获得下拉列表中的数据?即一个实现用例的类图包括一个边界类、一个控制类、一个或多个实体类?
请教一个关于C++边界调整的问题
在看Inside the C++ Object Model的时候,作者讲到过C++边界调整的问题,就是原本一个占用5Byte的对象将其拓展到8Byte,一个9Byte的对象拓展到12Byte,那么我想问为什么1Byte的兑现不给拓展到4Byte呢?
一个关于边界(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这是怎么回事呢?是不是我有哪里没有注意到呢?
俄罗斯方块(十)处理边界
当俄罗斯方块移动的时候,需要判断边界,来确定是不是可以移动。 判断边界有两个因素要考虑:1)是不是超过Panel边线,包括最大值和最小值。2)是不是有障碍块。 因为Panel边线和障碍块都是Panel的属性,也就是Panel的成员变量,所以,我们可以把确定边界的函数写成Panel的成员函数。   bool Panel::isUnavailable(int w, int h) { if...
MDX 边界情况处理
 MDX 边界情况处理(2009-04-08 14:39:34)标签:杂谈   本文来源于《MDX Solutions with Microsoft SQL.Server Analysis Services 2005 and Hyperion Essbase 2nd Edition》一书的内容。在编写MDX中,各种各样的边界情况存
方块边界变形处理
关于内容rn本系列视频共43小节,每小节平均15分钟。rn代码主要基于C语言,少量win32编程。即使大家不会win32也完全不要紧,课程涉及到的win32,全部精讲,大家一定会有很大的收获。
信号处理中的边界处理
在信号处理中,一般边界部分是很难处理的我们一般可以采取3种方法可以考虑: (1)重复边界法; (2)偶对称法; (3)奇对称法。 其宗旨是防止信号突变!!   matlab的延拓函数为 : wextend
qtpDatatable-边界处理
QTP自动化随书光盘 Datatable-边界处理
mediawiki边界处理
<br /><br />        在使用wiki中发现,内容页面始终占据浏览器100%宽度,一个不好的表现就是:当需要编辑特殊字段时,“编辑”始终在浏览器最右方,不方便操作,而且,文章内容占据宽度过长,不易于浏览。 <br />        因此,改动方法有二。 <br />        其一,在编辑新页面时,人为的写入“ <div style="n%">内容</div>” ,之后在“内容”替换为自己想要输入的内容即可,“n%”替换为需要的百分比即可。 <br />        
opencv-卷积边界处理
边界默认、常数、复制、包装、copyMakeBorder() 图像边界卷积时的问题:图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理(如下图)。 边界处理方法:在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘,这样就确保图像的...
TCP消息边界处理
在前面的几篇中,讲了关于套接字Socket以及利用套接字助手类来进行服务端和客户端之间的通信,在此中间并没有对发送的信息进行任何的处理。在本篇中将会讲一下TCP通信时的信息边界问题。 通过套接字或其助手类来接收信息时,是从缓存区里一次性把全部的缘存都读取出来,只要你设置的缓存够大,它就能读取这么多,这样就会导致这样的情况出现。如果服务端连续发送信息到客户端,如我连续发送字符串“message
Vue处理边界情况
访问根实例 1 .this.root2.所有的子组件都可以将这个实例作为一个全局的store来访问或者使用3.小型的小项目其实可以直接这样共享数据,大型的项目还是要使用Vuex来管理状态∗∗访问父组件实例∗∗1.root 2 .所有的子组件都可以将这个实例作为一个全局的store来访问或者使用 3 .小型的小项目其实可以直接这样共享数据,大型的项目还是要使用Vuex来管理状态 **访问父组件实例*...
OpenCV边界处理类型
http://blog.csdn.net/viewcode/article/details/8287599 1. 边界处理的类型 2. opencv的实现 在图像处理中,经常需要空域或频域的滤波处理,在进入真正的处理程序前,需要考虑图像边界情况。 通常的处理方法是为图像增加一定的边缘,以适应 卷积核 在原图像边界的操作。 1. 增加边界的类型有
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
opencv边界处理
一、简介   图像卷积或者相关操作的时候,边界像素不能计算,因为没有完全和内核模板完全重合,所以当是3*3的模板时,最外的一层边界没被处理;5*5的模板有两层边界没被处理,可以通过在开始前增加边界外层的像素,卷积处理了边界像素后再去除多的像素。 二、函数API 2.1 copyMakeBorder()函数: void copyMakeBorder(InputArray src, OutputA...
UIView 超出边界的处理
例如:一个UIButton的一部分添加到一个UIView上,那么你点击的时候只有点击在和它父类交集的地方才起作用,如何解决这个问题呢? - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { if (CGRectContainsPoint(self.button.frame, point)) { ...
自定义开关——边界处理
剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的完全自定义控件的方法
SlideMenu——边界处理
剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的完全自定义控件的方法
自动刷新的listview——边界的处理
剔除繁杂的理论,注重实践,深入浅出讲解Android中的自定义控件中的继承已有组件的方法
关于贪吃蛇图片问题。
最近在研究贪吃蛇程序,想知道怎么引用网上找来的图片?因为我不会用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
关于贪吃蛇几分的问题、、、、
在做贪吃蛇的程序。雏形已经做好了。想在界面上加个textfield控件来记分数。但是加了textfield空间后。keylistener()监听器似乎监听不到上、下、左、右键了。rn 求解决方法,相加积分器。您懂得
关于一个类似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
一个 关于加速贪吃蛇 移动的问题???
小弟 初学 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
关于map的问题 clip和边界
这2天一直在弄这个map的问题,希望各位给点建议或者意见,帮忙一下~~ 1 如何判断当图片移出了蓝色框范围外,使它回到蓝色框内? 也就是说超出边界。回到能显示的范围内。不要让人看见出现白色的底色。 2 如何使图片只显示在可见范围内【即显示层的那个大小】的那部分,我知道用clip ,但是一直没试出来。 (就如maps.baidu.com的那个效果) [code] ...
关于struct的边界对齐问题
关于struct的边界对齐问题Intel、微软等公司曾经出过一道类似的面试题:1. #include 2. #pragma pack(8)3. struct example14. {5. short a;6. long b;7. };8. struct example29. {10. char c;11. example1 struct1;1
关于数组边界和delete[]的问题
举个例子:rnchar* str = new char[256];rndelete[] str;rnrn在C++中 编译器可以知道指针指向的数组的大小和边界吗?rnrn在delete[] str 系统是怎样知道 指针 str 指向的数组有几个元素 并全部释放呢?
关于打印纸张边界设置的问题
打印纸张在程序里可不可以控制呀。给点代码。谢了各位大虾。
相关热词 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd c# 操作sql视图