shfdljz 发表于 2013-1-18 12:24

谁能帮我下,我真的没办法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怪物与人的距离 浮点
GoodsName:=Pointer(Goods^+$10B);//读出了名字
GoodsName:=Pointer(Goods^);
StrName:=(GoodsName);
if strName<>Edit1.Text then continue ;   //这里简单的设置下
pickgoods55(monid^);   //pickgoods55();ID攻击
end;
end;

我知道冒泡排序不知道怎么写,谁能发发善心帮帮我 在我的写代码下下去,按怪物与人的距离
先打最近的怪物

1354669803 发表于 2013-1-18 13:08

表示不会写程序

shfdljz 发表于 2013-1-18 13:34

恩,delphi 对于初学者来说看些简单的教程,能简单易懂的套出很多模式。但现在发现基础不够。却是不行,就为了这个,我找了百度所有文章都是给个冒泡排序 自己怎么套也套不上。还是谢谢楼上的话,我却是不会编程,我要一点点学习。

shfdljz 发表于 2013-1-19 10:57

哪个好心人求求你帮帮我

shfdljz 发表于 2013-1-20 17:24

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

醉倚黄昏 发表于 2013-1-21 16:46

冒泡排序是这么个意思不?
遍历数组,依次将当前位置的值与下一位置的值比较,不符合顺序就交换,循环次数是str.length-1吧貌似。

Emil 发表于 2013-1-21 16:52

为毛不学E语言呢、、、

shfdljz 发表于 2013-1-21 21:27

嗯,如果E语言就简单多了。。

永远前进的人 发表于 2013-6-26 18:34

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]
查看完整版本: 谁能帮我下,我真的没办法DELPHI 冒泡排序不会