mud_sanc 板


LINE

※ 引述《justinj (黑旋风)》之铭言: : 在前几天想要写数独制造程式时的某些问题 : 假如 a=({1,2,3,4,5,6,7,8,9})时 : Q1.想要让a乱序的话是 a=sort_array(a,"random_sort",this_object()); : //random_sort的设定就是return -1+random(2) int random_sort(int a1,int a2) { return -1+random(3); } 自订上述函数即可,再让你的 a 阵列去呼叫它. a=sort_array(a,"random_sort",this_object()); (random_sort 就自己写在 this_object() 我代表的物件中) 这样 a 就会被乱数排序。 : Q2.如果想要随便选取3个数..而且这3个数还乱序的话.. : A2.就是题目1的解a..然後a[0..2]就可以了吧 : //可能还有更简单的方法 a=sort_array(a,"random_sort",this_object()); b=a[0..2]; 这样 b 就是从「已乱数排过序」的阵列里头选出前三个数. : Q4.如果题目2限制必定要有某群不定元素呢? : //例如限制要有mixed b里的元素...b可能空的,可能1个,2个 mixed a,b,c=({}); a=({1,2,3,4,5,6,7,8,9}); b=({不定阵列}); // 从 a 随便取出 3 个 a=sort_array(a,"random_sort",this_object()); c=a[0..2]; // 把 c 跟 b 加在一起变成新的 c c+=b; // 再乱数排序 c=sort_array(c,"random_sort",this_object()); : Q5.a1=({1,2,3,4,5}),a2=({2,3,4}),a3=({2,3,5}), : b1从a1任选一元素出来,...(其它同理) : b1,b2,b3皆为不同的数字 : 那要怎麽随机选? int b1,b2,b3; b1=a1[random(sizeof(a1))]; // 先从 a1 随机选一个 a2=a2-({b1}); // 把 b1 从 a2 里头扣掉(有就会扣) b2=a2[random(sizeof(a2))]; a3=a3-({b1}); a3=a3-({b2}); // 再把 b1, b2 从 a3 里头扣掉 b3=a3[random(sizeof(a3))]; 三次测试结果如下 b1=4, b2=3, b3=2. b1=5, b2=4, b3=3. b1=3, b2=2, b3=5. : Q6.题目5里b1,b2,b3其中有一个必定有2的情况 就 a1, a2, a3 来说, 三个都有元素 ({2}) 的情况,就 变得很单纯. switch(random(3)) { case 0: b1=2; a2-=({2}); a3-=({2}); break; case 1: b2=2; a1-=({2}); a3-=({2}); break; case 2: b3=2; a1-=({2}); a2-=({2}); break; } // 假设上面跑出 b2=2 // 这时 b1 不会是 2(因为 2 已经先从 a1 里头扣掉) if(b1!=2) b1=a1[random(sizeof(a1))]; // 先从 a1 随机选一个 a2=a2-({b1}); // 把 b1 从 a2 里头扣掉(有就会扣) // 因此时 b2 为 2, 所以不做底下动作 if(b2!=2) b2=a2[random(sizeof(a2))]; a3=a3-({b1}); a3=a3-({b2}); // 再把 b1, b2 从 a3 里头扣掉 if(b3!=2) b3=a3[random(sizeof(a3))]; 测试十次结果 b1=3, b2=4, b3=2 b1=4, b2=3, b3=2 b1=3, b2=2, b3=5 b1=5, b2=4, b3=2 b1=5, b2=2, b3=3 b1=4, b2=2, b3=3 b1=4, b2=2, b3=3 b1=2, b2=3, b3=5 b1=2, b2=4, b3=3 b1=2, b2=3, b3=5 以上是「特殊情况」。一般情况你可以这麽写.. int i; mixed a1=({}),a2=({}),a3=({}); while(member_array(2,({b1,b2,b3})==-1) // 一直都没有 2 { a1=({1,2,3,4,5}),a2=({2,3,4}),a3=({2,3,5}); if(i++>100) break; b1=a1[random(sizeof(a1))]; // 先从 a1 随机选一个 a2=a2-({b1}); // 把 b1 从 a2 里头扣掉(有就会扣) b2=a2[random(sizeof(a2))]; a3=a3-({b1}); a3=a3-({b2}); // 再把 b1, b2 从 a3 里头扣掉 b3=a3[random(sizeof(a3))]; } 这样它就会一直去做选出 b1,b2,b3 的动作, 并且会一直 执行到其中一个终於都有 2 的情况。 不过用 while 就必须小心造成无限回圈的情况, 因此才会 加上一个 if(i++>100) break; 的防无限回圈判断。 (通常做到 100 次都无法求得, 就是有写错或怎样) : Q7.题目5里b1,b2,b3里面必定要有某群不定元素呢? : //例如限制要有mixed b里的元素...b可能空的,可能为({2}),({3}),({2,3})之类的 把上面的 b1, b2, b3 宣告为 mixed 即可, 语法都类似. : 其它问题: : 要怎麽让玩家不放出en的攻击 : 目前已知有2个.. : 一个是让玩家漂浮(cast float) : 另一个是让玩家打不还手(attack stop) : 问一下还有第3种吗? 一、周期性对玩家设定特别参数 if(me->query_temp("time_record/cmd_attack_times")) { write(NOR"(你现在是打不还手的状态).\n"); return ; } 所以怪物若周期性对玩家 set_temp("time_record/cmd_attack_times",time()+秒); 例如在怪物的 special_fun 中做上述动作之类的,然後再 把该怪物发动特攻的机率设高一点, 每次发动特攻就每次做 上述动作就可达到类似效果。 二、同样是设定特殊参数 else if(sk=(string)me->query_temp("no_smite")) { write(sk); return ; } 但是这个就不建议, 因为它没有终止机制. (用 time 就比较保险, 时间过了玩家就可正常攻击) Belldandy. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.29.173.213 ※ 编辑: laechan (1.165.161.242), 06/30/2014 23:08:52







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP