Re: [請益] 關於±400.±400的問題
※ 引述《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,400、400,-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
05/07 01:19, 3F
→
05/07 01:20, , 4F
05/07 01:20, 4F
→
05/07 02:40, , 5F
05/07 02:40, 5F
→
05/07 02:56, , 6F
05/07 02:56, 6F
討論串 (同標題文章)
travian 近期熱門文章
PTT遊戲區 即時熱門文章
15
43