TC官方合作论坛

 找回密码
 立即注册
查看: 1490|回复: 4

[其他] tc简单开发。冒泡排序。快速排序。

[复制链接]
发表于 2016-8-19 21:30:00 来自手机 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 剑仙十号 于 2023-2-21 04:45 编辑

tc简单开发。冒泡排序。快速排序。

代码环境:tc6.2。
数组排序:用冒泡排序取距离最近的怪物。
新手知识普及。大鸟飘过。


用CE6.4,找到怪物的基址。

查找游戏怪物距离。

假设得到6个数字,

怪物[0]= 12

怪物[1]= 8

怪物[2]= 19

怪物[3]= 1

怪物[4]= 6

怪物[5]= 2

把距离数值赋值到数组的无元素。



变量 线程ID

功能 执行()

var arr = 数组()
//数组成员的赋初值。
arr[0] = 12

arr[1] = 8

arr[2] = 19

arr[3] = 1

arr[4] = 6

arr[5] = 2

数组按大小排序(arr,真)

数组按大小排序(arr,假)

结束

//
功能 数组按大小排序(原数组,从小大到= 真)

变量arr_len = 数组大小(原数组)

for(var i = 0; i < arr_len; i++)

//

//

for(var j = 0; j < arr_len -1 -i; j++)

var 周转值//设置用来周转的变量.

如果(从小大到== 真)

如果(原数组[j]> 原数组[j+ 1])

周转值= 原数组[j+ 1]

原数组[j+ 1] = 原数组[j]

原数组[j]= 周转值

结束

否则如果(从小大到== 假)

如果(原数组[j]< 原数组[j+ 1])

周转值= 原数组[j+ 1]

原数组[j+ 1] = 原数组[j]

原数组[j]= 周转值

结束

结束

结束

//

//

结束

调试输出(数组转字符串(原数组))

返回 原数组

结束

功能 启动_热键()

线程ID= 线程开启("执行","")

结束

功能 终止_热键()

线程关闭(线程ID)

结束



3楼.然并卵,CE找怪物基址和坐标才是最难的部分~能找到基址怎么玩都行

君℃ 5-21 02:15 回复


游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1威望 +5 金币 +5 收起 理由
言术 + 5 + 5 支持一下

查看全部评分

回复

使用道具 举报

发表于 2016-8-20 20:42:30 | 显示全部楼层
通常游戏怪物是一个结构体    这个结构体是  包含了  怪物ID  怪物名字 怪物坐标  怪物血量  等怪物信息   怪物基址也就是这个结构体的指针。
最好查找的方法就是怪物ID  每个怪物的ID是不一样的 这样游戏方便区分你正在选中 或者 攻击哪个怪物
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-30 08:23:11 来自手机 | 显示全部楼层
//tc6.2版的代码。
//快速排序采用分治的办法,几百,几千,几万个数据,快速排序的速度是冒泡的几倍.
//如果是几十个数据,冒泡排序就可以胜任。

变量 线程ID, arr
功能 执行()
  var arrstr, 元素个数, 最大下标
  arrstr = "array(8,6,2,7,1,9,5,4,10,3)"
  arr = 字符串转数组(arrstr)
  元素个数 = 数组大小(arr) //数组大小(),返回值是数组的元素个数.
  最大下标 = 元素个数 - 1 //数组的最大下标。
  //最小下标是从0开始数的,元素个数是从1开始数的。所以最大下标,永远比元素个数 少1.

  快速排序(0, 最大下标)
  for(var i = 0; i < 元素个数; i++)
    traceprint(arr[i])
  end
  数组清空(arr) //数据量大的话,全局数组会占很大的内存空间。所以 数组清空()
结束
//
功能 快速排序(L, B)
  if(L > B)
    return 0
  end
  //
  var i, j, key
  i = L
  j = B
  key = int(arr[L])
  while(j > i)
    while(int(arr[j]) >= key && j > i)
      j = j - 1
    end
    while(int(arr[i]) <= key && j > i)
      i = i + 1
    end
    if(j > i)
      var 周转值 = arr[i]
      arr[i] = arr[j]
      arr[j] = 周转值
    end
  end
  arr[L] = arr[i]
  arr[i] = key
  快速排序(L, i - 1)
  快速排序(i + 1, B)
结束
//
功能 启动_热键()
  线程ID = 线程开启("执行", "")
结束
功能 终止_热键()
  线程关闭(线程ID)
结束

回复 支持 反对

使用道具 举报

发表于 2023-6-25 02:09:03 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2023-12-5 21:36:32 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-3 08:34 , Processed in 0.043577 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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