好的,我正在编写一个Yachzee游戏,好吧,它不能很好地工作。
当我点击按钮" Roll"此代码已启动。
int rand1 = rand()%6+1;
int rand2 = rand()%6+1;
int rand3 = rand()%6+1;
int rand4 = rand()%6+1;
int rand5 = rand()%6+1;
Dice^ t1 = gcnew Dice (rand1);
Dice^ t2 = gcnew Dice (rand2);
Dice^ t3 = gcnew Dice (rand3);
Dice^ t4 = gcnew Dice (rand4);
Dice^ t5 = gcnew Dice (rand5);
它会创建五个单独的随机数,并将它们作为五个单独的对象发送到我的Dice.h。
这是Dice.h中的代码
using namespace System::Windows::Forms;
ref class Dice {
public:
Dice (int rand)
{
this->rand = rand;
createPictureBox();
}
private:
int rand;
PictureBox^ p;
public:
void createPictureBox()
{
//PictureBox^ p = gcnew PictureBox();
p->Size = System::Drawing::Size(91, 85);
if ( rand == 1 )
p->ImageLocation = "..\\Bilder\\dice_face_1.png";
else if ( rand == 2 )
p->ImageLocation = "..\\Bilder\\dice_face_2.png";
else if ( rand == 3 )
p->ImageLocation = "..\\Bilder\\dice_face_3.png";
else if ( rand == 4 )
p->ImageLocation = "..\\Bilder\\dice_face_4.png";
else if ( rand == 5 )
p->ImageLocation = "..\\Bilder\\dice_face_5.png";
else
p->ImageLocation = "..\\Bilder\\dice_face_6.png";
p->SizeMode = PictureBoxSizeMode::StretchImage;
}
public:
PictureBox^ getPictureBox()
{
return p;
}
int getRand()
{
return rand;
}
};
就像现在一样,程序中断了一个指向
行的箭头p->ImageLocation = "..\\Bilder\\dice_face_1.png";
如果我移动说
的行p->Size = System::Drawing::Size(91, 85);
在else下,其中更改SizeMode的行将会断开,箭头指向if,否则if或者其他数字对应于rand的值。如果我看下面似乎显示变量的所有不同值,它将显示此
Name | Value | Type
_________________________________________________________________
this | 0x02b6e9a4 { rand=1 p=<undefined value> } | Dice^
要添加的最后一件事是它会在中断时弹出
附加信息:未将对象引用设置为对象的实例。
答案 0 :(得分:0)
您需要创建PictureBox控件的实例,并将其作为子项添加到窗体或容器控件。
答案 1 :(得分:0)
在运行程序时,将在“打开它”的底部显示“异常设置”窗格,然后在搜索框中键入NullReferenceException并检查System.NullReferenceException框。