首页 > 解决方案 > 保存整数值以在多个过程中使用

问题描述

成功创建自定义程序后,我设法将其集成到我的案例中。问题是:我需要一个整数公开保存以进行更多程序,如果数字随机滚动,它应该添加健康点。代码没有显示任何错误,但我想要的不起作用,我也尝试将最后一部分(开始)移到前面,但这会导致错误。有什么建议么?我尝试使用 OnCreate 在启动时设置“hp”,但没有成功。

代码在这里:

var hp:integer;
{ TForm1 }
procedure TForm1.health;
begin
  Label6.Caption:= inttostr(hp);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Play = Chooses action (Rolls a Dice)'
  + sLineBreak + 'Say = Write down a message and say it in the log'
  + sLineBreak + 'HP = Shows your current health points'
  + sLineBreak + 'ATK = Shows your current attack points '
  + sLineBreak + 'DEF = Shows your current defend points '
  + sLineBreak + ' '
  + sLineBreak + '    Actual game version: 0.1'
  + sLineBreak + '_Created by xxxxxxxxx');
end;
procedure TForm1.Button2Click(Sender: TObject);
var v:string;
begin
v:=Edit1.Text;
Log.Lines.Add('Player says: ' +v);
end;
procedure TForm1.Button3Click(Sender: TObject);
var p:integer;
begin
  randomize;
  p:=random(5)+1;
  case p of
  1: ;
  2: heal;
  3: Log.Lines.Add('Nothing happend');
  4: ;
  5: ;
  end;
end;
procedure TForm1.heal;
begin
     hp:=+10;
     Log.Lines.Add('HP+10');
end;
begin
OnCreate
hp:=100;
Log.Lines.Add('Start: 100HP, 10ATK, 0DEF');
end. 

标签: delphipascallazarus

解决方案


声明hp:=+10;没有做你认为它做的事情。它将 的值设置hp为,它不会将 的值增加10。 为此,您需要使用以下任一方法:10hp

hp := hp + 10;
或者
Inc(hp, 10);

此外,理想情况下,该变量hp应该是表单的数据成员,而不是全局变量。

而且,您应该使用表单的OnCreate事件来执行初始化。

尝试更多类似的东西:

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    hp: integer;
    procedure ShowHealth;
    procedure Heal;
  end;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  hp := 100;
  ShowHealth;
  Log.Lines.Add('Start: 100HP, 10ATK, 0DEF');
end;

procedure TForm1.ShowHealth;
begin
  Label6.Caption := IntToStr(hp);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Play = Chooses action (Rolls a Dice)' + sLineBreak +
              'Say = Write down a message and say it in the log' + sLineBreak +
              'HP = Shows your current health points' + sLineBreak +
              'ATK = Shows your current attack points ' + sLineBreak +
              'DEF = Shows your current defend points ' + sLineBreak +
              sLineBreak +
              '    Actual game version: 0.1' + sLineBreak +
              '_Created by xxxxxxxxx');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  v: string;
begin
  v := Edit1.Text;
  Log.Lines.Add('Player says: ' + v);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  p: integer;
begin
  p := random(5) + 1;
  case p of
    1: ;
    2: Heal;
    3: Log.Lines.Add('Nothing happened');
    4: ;
    5: ;
  end;
end;

procedure TForm1.Heal;
begin
  hp := hp + 10; // or Inc(hp, 10);
  ShowHealth;
  Log.Lines.Add('HP+10');
end;

推荐阅读