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 |