Re: [請益] 關於±400.±400的問題

看板travian (妖精森林)作者 ( 鬼娃娃伊帆 )時間17年前 (2008/05/07 00:35), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串2/6 (看更多)
※ 引述《koten0926 (好吃!新奇!又好玩!)》之銘言: 因為不管X座標或Y座標, 到400或-400再過去就是-400或400, 沒有比400更大,而且像地球似的循環, 所以我有個疑問就是, 假如從(-200.-200)派兵到(400.400), 那距離會算成284.25還是848.52呢?

05/06 23:15,
是走近路沒錯,但這點程式要怎麼寫阿?
05/06 23:15
應該是要用上if else.....吧? 假設我們現在要從 400,400 走到 0,0 等腰三角型的斜邊,一比一比根號二 也就是 sqrt[ (400-0)^ + (400-0)^ ] = sqrt(32000) = 565.69 PS: 0,0 到 400,400400,-400-400,400-400,-400 此四個極點座標的距離都是178.89 但如果現在是要從 400,400 走到 -1,-1,卻不適用這個公式了 因為Travian的地圖,應該可以說是很像甜甜圈吧.... 0.0" 極地是互通的,可以一直繞圈圈走都走不完 如下圖所示: ╭ 400 -400 ╮ 200 -200 ╰ 1 0 -1 ╯ 所以咱根據以上總結,大膽推測:兩村之間的最大距離不會大於565.69 用C語言來表示的話,咱腦中想到的大概是下面這樣的模式吧 #include<stdlib.h> #include<stdio.h> #include<math.h> main() { int x,x1,x2,y,y1,y2,ans=0; printf("請輸入村莊甲的X座標:"); scanf("%d",&x1); printf("請輸入村莊甲的Y座標:"); scanf("%d",&y1); printf("請輸入村莊乙的X座標:"); scanf("%d",&x2); printf("請輸入村莊乙的Y座標:"); scanf("%d",&y2); if( (x1-x2)^ <= 160000 && (y1-y2)^ <= 160000 ) { ans = sqrt( (x1-x2)^ + (y1-y2)^ ); } if else ( (x1-x2) <= 160000 && (y1-y2) >160000 ) { ans = sqrt( (x1-x2)^ + (y1+y2)^ ); } if else ( (x1-x2) > 160000 && (y1-y2) <= 160000 ) { ans = sqrt( (x1+x2)^ + (y1-y2)^ ); } if else ( (x1-x2) > 160000 && (y1-y2) > 160000 ) { ans = sqrt( (x1+x2)^ + (y1+y2)^ ); } else { printf("\n本程式作廢,以上所寫的通通都是屁!\n"); } printf("村莊甲乙之間的距離為:%d",ans); return 0; system("pause"); } 特別附註! 咱自從大二考過校內程式認證之後就再也沒有碰過程式了...... 所以以上的程式必定是漏洞百出...... 希望意思有表達到就行了,各位看看就好 千萬別拿去compile啊...... Orz -- 「我們是學生,只要有學分什麼都好。  要笑等學分過了之後再笑,要哭等學分當光之後再哭  哭完之後,我們還是會笑。」 改自──「狼與辛香料」日本輕小說指南書《這本輕小說真厲害》票選第一名(06.07年) 蹲角落畫圈的鬼娃娃──http://ouryvonne.name/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.128.18.51

05/07 00:48, , 1F
推薦這篇文章! 真辛苦
05/07 00:48, 1F

05/07 00:49, , 2F
推薦這篇文章!
05/07 00:49, 2F
※ 編輯: ourYvonne 來自: 140.128.18.51 (05/07 00:58)

05/07 01:19, , 3F
跑了一下...判斷式還是有錯400,400->400-400結果是28.28
05/07 01:19, 3F

05/07 01:20, , 4F
不過大概就是這樣吧
05/07 01:20, 4F

05/07 02:40, , 5F
還真的拿去run了.... 不過真的能跑喔?? 囧> 沒想到....
05/07 02:40, 5F

05/07 02:56, , 6F
當然要de一下bug
05/07 02:56, 6F
文章代碼(AID): #1888Z95i (travian)
文章代碼(AID): #1888Z95i (travian)