TC官方合作论坛

标题: tc简单开发。冒泡排序。快速排序。 [打印本页]

作者: 剑仙十号    时间: 2016-8-19 21:30
标题: tc简单开发。冒泡排序。快速排序。
本帖最后由 剑仙十号 于 2016-9-8 16:31 编辑

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 回复

作者: 如此美丽。    时间: 2016-8-20 20:42
通常游戏怪物是一个结构体    这个结构体是  包含了  怪物ID  怪物名字 怪物坐标  怪物血量  等怪物信息   怪物基址也就是这个结构体的指针。
最好查找的方法就是怪物ID  每个怪物的ID是不一样的 这样游戏方便区分你正在选中 或者 攻击哪个怪物
作者: 剑仙十号    时间: 2016-8-30 08:23
//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)
结束






欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1