Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类型为';的未处理异常;System.NullReferenceException';发生在PacmanGame.exe中_C#_C# 4.0_C# 3.0_Pacman - Fatal编程技术网

C# 类型为';的未处理异常;System.NullReferenceException';发生在PacmanGame.exe中

C# 类型为';的未处理异常;System.NullReferenceException';发生在PacmanGame.exe中,c#,c#-4.0,c#-3.0,pacman,C#,C# 4.0,C# 3.0,Pacman,我一直在获取PacmanGame.exe中发生的“System.NullReferenceException”错误,代码的这一部分: if (cells[yPosition + 1, xPosition].CellType == 'o' || cells[yPosition + 1, xPosition].CellType == '.' || cells[yPosition + 1, xPosition].Cell

我一直在获取PacmanGame.exe中发生的“System.NullReferenceException”错误,代码的这一部分:

if (cells[yPosition + 1, xPosition].CellType == 'o' 
                    || cells[yPosition + 1, xPosition].CellType == '.'
                    || cells[yPosition + 1, xPosition].CellType == '!') 

公共部分类表单1:表单
{
const int cellSize=20;//以像素为单位的单元尺寸
//组成迷宫的二维细胞阵列
私有细胞[,]细胞;
//以平铺(不是像素)为单位的贴图宽度
私有int映射宽度;
//以平铺(不是像素)为单位的贴图高度
私人地图高度;
私有映像[]pacmanImage=新映像[4];
public int currentMouthPosition{get;set;}
私有映像[]ghostImage=新映像[2];
私有随机rnd=新随机();
private int currentEyePosition{get;set;}/=0;
私人智力得分=0;
私人生活=3;
//私人吃豆人移动吃豆人;
private int xPositiong=520;//重影的初始xPosition
private int yPositiong=200;//重影的初始yPosition
private int xpos=420;//Pacman的初始位置
private int ypos=260;//Pacman的初始位置
公共int pacmanisfacing=0;
//计时器1是给吃豆人的
public void timer1_Tick(对象发送方,事件参数e)
{
int xPosition=xpos/20;
int yPosition=ypos/20;
当前位置+=1;
如果(CurrentMoutPosition>3)CurrentMoutPosition=0;
如果(xPosition<0)xPosition=此宽度;
如果(xPosition>this.Width)xPosition=0,则为else;
如果(yPosition<0)yPosition=此高度;
否则,如果(yPosition>this.Height)yPosition=0;
//如果声明是为了探测墙壁,这样吃豆人就不会穿过它们
if(pacmanisfacing==0)//用于在pacman面朝下时检测墙壁
{
if(单元格[yPosition+1,xPosition].CellType=='o'
||单元格[yPosition+1,xPosition]。单元格类型=='。'
||单元格[yPosition+1,xPosition]。单元格类型=='!')
{
位置+=10;
//CheckCollision();//检查pacman是否与幽灵发生冲突
如果(单元格[yPosition+1,xPosition].CellType=='。'
&&(单元格[yPosition,xPosition].IsVisible==true))//使用的if语句检测药丸,并且药丸是否可见
{//它会把药片的数量加起来
单元格[yPosition,xPosition].IsVisible=false;//这是用于计算药丸得分的代码
分数+=10;//每次提起药丸时增加10分
ScoreInfoEventArgs currentScore=新的ScoreInfoEventArgs(分数);
OnScoreChanged(当前分数);
}
//用于检测能量药丸并增加额外点数的if语句
if(单元格[yPosition+1,xPosition].CellType=='!'&&(单元格[yPosition,xPosition].IsVisible==true))
{
单元格[yPosition,xPosition].IsVisible=false;
分数+=50;//力量药丸被举起时增加50分
ScoreInfoEventArgs currentScore=新的ScoreInfoEventArgs(分数);
OnScoreChanged(当前分数);
//SoundPlayer myPlayerMove=新的SoundPlayer(“…\\\\\Sounds\\pacman\u eatfruit.wav”);//当一个能量药丸被提起时,播放吃水果的曲调
//myPlayerMove.Play();
}
}
}

在该特定行中只有两个内容可能为空

(cells[yPosition + 1, xPosition].CellType == 'o' || cells[yPosition + 1, xPosition].CellType == '.' || cells[yPosition + 1, xPosition].CellType == '!')
  • 细胞
  • 单元格[yPosition+1,xPosition]处的数组元素

如果单元格为null,这是一个简单的修复方法——这意味着单元格引用的对象尚未实例化。如果数组元素为null,则单元格索引或填充单元格数组的逻辑是错误的。

在使用数组之前,您必须分配数组,并且数组需要一个大小。可能需要更改
单元格[,]
要阅读的行:
专用单元格[,]单元格=新单元格[cellSize,cellSize];
请阅读如何实例化该对象?
(cells[yPosition + 1, xPosition].CellType == 'o' || cells[yPosition + 1, xPosition].CellType == '.' || cells[yPosition + 1, xPosition].CellType == '!')