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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0116
Q画面ちらつきを防いだらメッセージボックス内容が消えない5解決


Q

リンク

2011/1/16(Sun) 16:49:29|NO.36633

はじめまして
ごく簡単なアドベンチャーゲームを作っているのですが、メッセージ表示部分で引っかかっております
下記のソースで実行すると、1日目は1〜5日目は5が出るまではいいのですが、
6日目以降も1〜5が一瞬表示されてしまいます(連打すると顕著です)
redraw周辺をcls 0に変えればこの問題は解決するのですが、今度はチラツキが激しくなってしまいます
nowmesの中身に間違いはないと思うので、塗りつぶすときにメッセージボックス内の内容が消えていないように思いますが、
これを修正するにはどうすればいいでしょうか
objprmを使えばいいのかとも思いましたが、
objprm 1,"100"

などを挿入しても表示されませんでした 非常に初歩的な質問ですみません、よろしくお願い申し上げます
title "てすと"
width 640,480,0,0
cls 0
sdim nowmes, 1024

*start
redraw 0
color 255,255,255
boxf
color

day = day + 1

;メッセージ
nowmes = " "
if day = 1 : nowmes = "1"
if day = 2 : nowmes = "2"
if day = 3 : nowmes = "3"
if day = 4 : nowmes = "4"
if day = 5 : nowmes = "5"

pos 0,0
mes " " + day + "日目"
pos 0,110
button "次の日" , *tugi

*mess ;メッセージ表示部
pos 0,350
mesbox nowmes, 640, 130, 0
redraw 1
stop

*tugi
goto *start

end



この記事に返信する


てれてれ

リンク

2011/1/16(Sun) 17:09:56|NO.36634


title "てすと" width 640,480,0,0 cls 0 sdim nowmes, 1024 pos 0,350 mesbox nowmes, 640, 130, 0 *start redraw 0 color 255,255,255 boxf color day = day + 1 ;メッセージ nowmes = " " if day = 1 : nowmes = "1" if day = 2 : nowmes = "2" if day = 3 : nowmes = "3" if day = 4 : nowmes = "4" if day = 5 : nowmes = "5" pos 0,0 mes " " + day + "日目" pos 0,110 button "次の日" , *tugi *mess ;メッセージ表示部 objprm 0,nowmes redraw 1 stop *tugi goto *start end



通りすがり

リンク

2011/1/16(Sun) 17:11:49|NO.36635

ボタンを押すたびに button と mesbox が実行され
オブジェクトが同じ場所に増え続けてしまっているので、
まず最初にオブジェクトを1個ずつ作って置いて
それ以後の内容の変更は objprm でする様にしましょう。



ORZ

リンク

2011/1/16(Sun) 17:22:40|NO.36636

まずmesboxやボタンをそのように使えとどこで覚えてきたのか俺に教えなさい。
redrawやボタン、アドベンチャーゲームのサンプルをきちんと見ればこんなモノは出来上がらんだろう。

mesboxやボタンは画面上に表示される「オブジェクト」であり、redrawで上から白く塗りたくろうが
消えないで残る。このソースでは同じ座標に延々とボタンとメッセージボックスを表示するという意味になり
それが何かアヤシイ挙動をしている原因だと思うのでclrobjあたりを頭のほうに挟むとオブジェクトをクリアできる。
redrawとclsの違い、画面の文字とボタンなどのオブジェクトの違い、インデント、絶対に到達しないend命令など
素晴らしき「誤りの見本」なのでしっかりいろいろ勉強するように。具体的にはどっかでサンプルを見るように。



Q

リンク

2011/1/16(Sun) 20:30:32|NO.36650

>てれてれさん
ありがとうございます
一番はじめに置けばオブジェクトIDは0でいけるんですね

>通りすがりさん
ありがとうございます
objprm使おうにもオブジェクトIDの取り方が分からず、
ボタン数もちょこちょこ変える予定なので難しげです

>ORZさん
ヘルプのみ読んで、困ったらググッています
mesbox使ったのは初めてなので戸惑ったのですが、ボタンも塗りつぶせないんですね
ということは以前作ったあれやこれやも改善できそうです


とりあえず今回はclrobj使って、オブジェクトIDの取り方をもう一度調べてみます
ありがとうございました



通りすがり

リンク

2011/1/16(Sun) 21:33:23|NO.36651

> objprm使おうにもオブジェクトIDの取り方が分からず、
> ボタン数もちょこちょこ変える予定なので難しげです

オブジェクトを設置する命令が実行されると
システム変数のstatに、作られたオブジェクトのIDが格納されるので
それを変数に保持しておけば必要な場面で任意のIDを指定できます。



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