C# 类型为';的未处理异常;System.NullReferenceException';发生在PacmanGame.exe中
我一直在获取PacmanGame.exe中发生的“System.NullReferenceException”错误,代码的这一部分: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
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 == '!')