吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4673|回复: 8
收起左侧

[其他转载] 谁能帮我下,我真的没办法DELPHI 冒泡排序不会

[复制链接]
shfdljz 发表于 2013-1-18 12: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怪物与人的距离 浮点
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[i]<>#32)And(str[i]<>#0)) do //字符串可以用数组索引
          begin
            temp:=temp+str[i];
            i:=i+1;
          end;
            num[j]:=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[j] < num[j+1]) then
      begin
        m:= num[j];
        num[j]:= num[j+1];
        num[j+1]:= m;
      end;
    end;
  end;

  Edit1.Text:= '';
  For l:= n-1 Downto 1 do
    Edit1.Text:= Edit1.Text + IntToStr(num[l]) + ' ';

end;

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 11:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表