HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0219
ブロックランキングの表示について7未解決


ブロック

リンク

2009/2/19(Thu) 23:00:48|NO.23491


*ranking1 redraw 0 await 50 notesel but noteload "ランキング.txt" repeat 5 noteget ra,cnt noteget r2(cnt),5+cnt r1.cnt = int(ra) loop noteunsel mes but redraw 1 await 50 goto *ranking1 *ranking2 notesel buf noteload "ランキング.txt" repeat 5 noteget ra,cnt noteget na(cnt),5 + cnt toku.cnt = int(ra) loop noteunsel if tokuten <= r1.4 : goto *menu : else : goto *ranking3 *ranking3 ;名前の書き込み cls picload "haikei 3.jpg" pos 190,10 font "MSゴシック",50 mes "ランキング" font "MSゴシック",20 pos 200,100 mes "名前を入力してください" name = "" pos 250,130 input name,80,20 pos 250,155 button "クリック",*ranking4 stop *ranking4 ;順位の入れ替え namec = strlen(name) if namec < 0 | namec > 6 : goto *ranking3 cls toku.4 = tokuten na.4 = name cnt1 = 4 : cnt2 = 3 : iti1 = 0 : iti2 = 0 repeat 4 if toku.cnt1 > toku.cnt2 { iti1 = toku.cnt1 iti2 = na.cnt1 toku.cnt1 = toku.cnt2 toku.cnt2 = iti1 na.cnt1 = na.cnt2 na.cnt2 = iti2 } cnt1 -= 1 : cnt2 -= 1 loop notesel but noteload "ランキング.txt" repeat 5 noteadd str(toku(cnt)),cnt,1 noteadd na(cnt),5 + cnt,1 loop notesave "ランキング.txt" noteunsel goto *ranhyouji
このプログラムで(例)のように表示させる事ってできますか?
(例)
1 0000 aaaa
2 0000 bbbb
3 0000 cccc
4 0000 dddd
5 0000 eeee

よろしくお願いします



この記事に返信する


ANTARES

リンク

2009/2/20(Fri) 01:18:04|NO.23500

 ランキング.txtにそう書けばいいでしょう。



ブロック

リンク

2009/2/20(Fri) 01:33:03|NO.23502

ランキング.txtにそう書いても上書きすると配置場所が変わるんです



ANTARES

リンク

2009/2/20(Fri) 01:36:53|NO.23503

 それは、あなたが書きたいものと違うものを書くようなスクリプトになっているからでしょう。
でも、私の環境では何度実行しても同じものが表示されますよ。
上のスクリプトは上書きしていないということ?
だとしたら、上書きするスクリプトを書いてくれないとアドバイスのしようがありません。



ANTARES

リンク

2009/2/20(Fri) 01:50:07|NO.23504

 長いスクリプトを書くと文句を言う人がいるけど、それが管理人でない限り、気にしなくていいです。
書き込めたということは、管理人の許容範囲と考えていいはずなので。
 許容しているわけじゃないけど、制限する時間がないとかも考えられますが、
それなら管理人自身が注意するはずなので。



レノス

リンク

2009/2/20(Fri) 21:28:54|NO.23510

ブロックさん、 *ranking1 しか実行されてませんよ、それ。^^



otta

リンク

2009/2/21(Sat) 09:44:53|NO.23514

貼ってあるスプリクトではゲームオーバーとなったときにどこに飛んでいるか分からないのと
goto *ranhyoujiの行き先が貼ったスプリクトに無いので表示部分がどうなってるか分からないので
このスプリクトだけでは無理としかお答えできないですね。

dim r1,5
sdim r2,7,5 sdim r3,5,5 /*サンプルのため適当なデータを設定 */ r1=1000,400,120,40,5 r2="AAA","BBB","CCC","DDD","EEE" if r1(0)<1000 : r3(0)="0" ;1位のスコアの1000以下なら0を1個付ける if r1(0)<100 : r3(0)="00" ;1位のスコアの100以下なら0を2個付ける if r1(0)<10 : r3(0)="000" ;1位のスコアの10以下なら0を3個付ける r3(0)=r3(0)+str(r1(0)) ;1位のスコアの前に0を付け足す mes "1 "+r3(0)+" "+r2(0) ;1位のスコア表示 if r1(1)<1000 : r3(1)="0" ;2位のスコアの1000以下なら0を1個付ける if r1(1)<100 : r3(1)="00" ;2位のスコアの100以下なら0を2個付ける if r1(1)<10 : r3(1)="000" ;2位のスコアの10以下なら0を3個付ける r3(1)=r3(1)+str(r1(1)) ;2位のスコアの前に0を付け足す mes "2 "+r3(1)+" "+r2(1) ;2位のスコア表示 if r1(2)<1000 : r3(2)="0" ;3位のスコアの1000以下なら0を1個付ける if r1(2)<100 : r3(2)="00" ;3位のスコアの100以下なら0を2個付ける if r1(2)<10 : r3(2)="000" ;3位のスコアの10以下なら0を3個付ける r3(2)=r3(2)+str(r1(2)) ;3位のスコアの前に0を付け足す mes "3 "+r3(2)+" "+r2(2) ;3位のスコア表示 if r1(3)<1000 : r3(3)="0" ;4位のスコアの1000以下なら0を1個付ける if r1(3)<100 : r3(3)="00" ;4位のスコアの100以下なら0を2個付ける if r1(3)<10 : r3(3)="000" ;4位のスコアの10以下なら0を3個付ける r3(3)=r3(3)+str(r1(3)) ;4位のスコアの前に0を付け足す mes "4 "+r3(3)+" "+r2(3) ;4位のスコア表示 if r1(4)<1000 : r3(4)="0" ;5位のスコアの1000以下なら0を1個付ける if r1(4)<100 : r3(4)="00" ;5位のスコアの100以下なら0を2個付ける if r1(4)<10 : r3(4)="000" ;5位のスコアの10以下なら0を3個付ける r3(4)=r3(4)+str(r1(4)) ;5位のスコアの前に0を付け足す mes "5 "+r3(4)+" "+r2(4) ;5位のスコア表示



SYAM

リンク

2009/2/21(Sat) 10:06:48|NO.23515

0詰めには strf()関数が便利どす。
↑のスクリプトの if 以降をこれで置き換えてみましょう。

repeat 5 if(cnt=0):rank="1st" if(cnt=1):rank="2nd" if(cnt=2):rank="3rd" if(cnt>2):rank=strf("%dth",cnt+1) mes rank+" "+r3(cnt)+strf(" %05d",r1(cnt)) loop



ONION software Copyright 1997-2023(c) All rights reserved.