SRC質問掲示板Mk2
(現在 過去ログ102 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■18499 / inTopicNo.1)  味方の撃退数を1位から3位まで調べたい
  
□投稿者/ 皇翼 -(2006/05/19(Fri) 17:51:37) [ID:HTMPd4fr]
    *破壊 敵:
    *破壊 中立:
    If (Party(相手パイロット) <> 味方) Exit
    Incr 撃退数[相手パイロット]
    Exit

    というプログラムをインクルに置いて味方ユニットの
    敵撃退数をカウントしました。
    この撃退数が1位のキャラ、2位のキャラ、3位のキャラの
    名前の表示を行いたいのですが、どうすればいいのでしょうか…?

    どうかお願いします。
引用返信/返信 削除キー/
■18500 / inTopicNo.2)  Re[1]: 味方の撃退数を1位から3位まで調べたい
□投稿者/ Unnamed -(2006/05/19(Fri) 19:47:58) [ID:RljYHlvN]
     SRC2.2以降限定で良ければ簡単です。Sortで整列してからForEachで必要な
    分だけコピーします。
    
    ----
    
    Sort 撃退数 "降順"
    
    Local nth = 3
    Local c = 1
    Local nth_elem pname
    ForEach pname in 撃退数
    	If c > nth Then
    		Break
    	EndIf
    	nth_elem[c] = Nickname(pname)
    	incr c
    Next
    
    Ask nth_elem ""
    
    ----
    
     SRC2.0以前でも動かしたい場合は、少し手間がかかりますが以下のようにします。
    
    ----
    
    # まず撃退数をコピー
    Local temp pname
    ForEach pname In 撃退数
    	temp[pname] = 撃退数[pname]
    Next
    
    Local nth = 3
    Local nth_elem maxpname max i
    
    # n個の要素を大きい方から順に抜き出す
    For i = 1 To nth
    	# 初期値(前提条件 : 撃退数 >= 0)
    	max = -1
    
    	# tempから最大値を探す
    	ForEach pname In temp
    		If max < temp[x] Then
    			max = temp[pname]
    			maxpname = pname
    		EndIf
    	Next
    
    	If max = -1 Then
    		# 最大値が更新されていない == nth > Count(撃退数)
    		Break
    	EndIf
    
    	# 最大値をtempからpop
    	nth_elem[Count(nth_elem) + 1] = Nickname(maxpname)
    	UnSet temp[maxpname]
    Next
    
    Ask nth_elem ""
    
    ----
    

引用返信/返信 削除キー/
■18503 / inTopicNo.3)  Re[2]: 1位から3位の撃退数も引っ張ってきたい。
□投稿者/ 皇翼 -(2006/05/20(Sat) 18:42:00) [ID:HTMPd4fr]
    すいません、バージョンを書いていませんでした…。
    バージョンはSRC2.2です。

    教えていただいたとおりにしてみたらできました!
    ありがとうございます。

    ですが、どうもできないことがありまして…
    もう一つ質問してもよろしいでしょうか?


    PaintPicture (Info(パイロット, nth_elem[1], グラフィック)) 65 334 96 96 保持
    Font 15pt #FFFFFF ゴシック Bold 保持
    PaintString 65 384 XXXXXXXXX…???
    Refresh


    その『nth_elem[1]』『nth_elem[2]』『nth_elem[3]』。
    このパイロットと同時に撃退数も表示したいのですが
    どうすれば撃退数を引っ張ってこれるんでしょうか…?
引用返信/返信 削除キー/
■18512 / inTopicNo.4)  Re[3]: 1位から3位の撃退数も引っ張ってきたい。
□投稿者/ Unnamed -(2006/05/21(Sun) 02:57:14) [ID:RljYHlvN]
     都合上省略しましたが、後で使う場合は名称で保持し、愛称に変換するのは
    最後でよいでしょう。

    ----

    Sort 撃退数 "降順"

    Local nth = 3
    Local c = 1
    Local nth_elem pname
    ForEach pname in 撃退数
    If c > nth Then
    Break
    EndIf
    nth_elem[c] = pname
    incr c
    Next

    Talk
    一位:撃退数$(撃退数[nth_elem[1]]); $(Nickname(nth_elem[1]))
    End

引用返信/返信 削除キー/
■18515 / inTopicNo.5)  Re[4]: 1位から3位の撃退数も引っ張ってきたい。
□投稿者/ 皇翼 -(2006/05/21(Sun) 07:19:32) [ID:HTMPd4fr]
    どうもありがとうございます。
    なるほど…
    名前にした後に(撃退数[nth_elem[1]])という手があったのですね…。

    お手間をおかけしてすみません。
    本当にどうもありがとうございました!
解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -