谁能帮我下,我真的没办法DELPHI 冒泡排序不会
varmonid,Goods,Goods1:PDWORD;
i:DWord;
goodsName:PAnsiChar;
strName:string;
begin
if self.CheckBox9.Checked then
for i:=0 to 80 do
begin
Goods:=Pointer(PGameBase);
Goods:=Pointer(Goods^+I*4);
monid:=Pointer(Goods^+$20);//+80怪物ID
Goods1:=Pointer(Goods^+$90);//+90怪物与人的距离 浮点
GoodsName:=Pointer(Goods^+$10B);//读出了名字
GoodsName:=Pointer(Goods^);
StrName:=(GoodsName);
if strName<>Edit1.Text then continue ; //这里简单的设置下
pickgoods55(monid^); //pickgoods55();ID攻击
end;
end;
我知道冒泡排序不知道怎么写,谁能发发善心帮帮我 在我的写代码下下去,按怪物与人的距离
先打最近的怪物 表示不会写程序 恩,delphi 对于初学者来说看些简单的教程,能简单易懂的套出很多模式。但现在发现基础不够。却是不行,就为了这个,我找了百度所有文章都是给个冒泡排序 自己怎么套也套不上。还是谢谢楼上的话,我却是不会编程,我要一点点学习。 哪个好心人求求你帮帮我
var
monid,Goods,Goods1:PDWORD;
i:DWord;
goodsName:PAnsiChar;
strName:string;
begin
if self.CheckBox9.Checked then
for i:=0 to 80 do
begin
Goods:=Pointer(PGameBase);
Goods:=Pointer(Goods^+I*4);
monid:=Pointer(Goods^+$20);//+80怪物ID
Goods1:=Pointer(Goods^+$90);//+90怪物与人的距离 浮点 主要在这里Goods1 的值是遍历所有怪物与人物的距离 ***
GoodsName:=Pointer(Goods^+$10B);//取出怪物了名字
StrName:=(GoodsName); //字符转换
if strName<>Edit1.Text then continue ; //在Edit1里输入怪物名字就可以遍历出怪物对应名字的怪物ID(但打怪不是按最近打起)
pickgoods55(monid^); //pickgoods55();pickgoods55 是用怪物ID的技能攻击 里面的monid^是怪物ID
end;
end;
假设没有就这样写也可以打怪,但打怪,不是按最近的距离打怪,我想想 遍历Goods1的值最小 用排序遍历指向最近的怪物ID,就想我制定的GoodsName转换名字可以遍历出怪物的ID 冒泡排序是这么个意思不?
遍历数组,依次将当前位置的值与下一位置的值比较,不符合顺序就交换,循环次数是str.length-1吧貌似。 为毛不学E语言呢、、、 嗯,如果E语言就简单多了。。 procedure TForm1.BitBtn1Click(Sender: TObject);
var
str : String;
temp: String;
num: array of Integer;
i,j,k: Integer;
n,m,l: Integer;
begin
str:= Trim(Edit1.Text);
Setlength(num,length(Edit1.Text));
i:=1;
j:=1;//字符串从1开始
while (i<Length(str)) do
begin
While((str<>#32)And(str<>#0)) do //字符串可以用数组索引
begin
temp:=temp+str;
i:=i+1;
end;
num:=StrToInt(temp);
i:=i+1;
j:=j+1;
temp:='';
end;
//执行冒泡排序
n:= j;
For l:=1 to n-1 do
begin
k:= n - l;
For j:=1 to k do
begin
If (num < num) then
begin
m:= num;
num:= num;
num:= m;
end;
end;
end;
Edit1.Text:= '';
For l:= n-1 Downto 1 do
Edit1.Text:= Edit1.Text + IntToStr(num) + ' ';
end;
页:
[1]