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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0419
ねこ<修正>HSPスクリプトエディタにて、反映されない問題点はどこですか4解決


ねこ

リンク

2024/4/19(Fri) 20:52:02|NO.101566

HSPスクリプトエディタの画像交互表示の仕方を質問した者です。
スレッドの困ってるマークと解決マークの切り替えの仕方が分からなかったので新規で作らせて頂きました。

画像交互表示のヘルプにて教えて頂き、無事に背景が完成したのですが、「main」や「pose++」を使ったものを追加で書き込んだのですが、コンパイル+実行を押したところ書き込んだものが反映されませんでした。
追加で書き込んだ指示?プログラム?を反映させるためにはどうすれば良いですか。それとも、そういうものはなく、ただ書き間違えているだけでしょうか。
書き込んだものを書かせて頂きます。
title "海"

screen 0,480,480

buffer 1 : picload "水面.jpg"

buffer 2 : picload "水面2.jpg"

gsel 0

target=1
repeat
redraw 0
pos 0,0 : gcopy target,0,0,640,480
target++
if target>2 : target=1
redraw 1
await 1000
loop

buffer 1 : picload "さかな.bmp"

x=240
y=70
;-------------------------------------------
*main
y=y+10:wait 10
if y>600 { y=150:a=rnd(300):x=100+a}
;*****************************************************************
redraw 0
gmode 1,480,600
pos 0,0:gcopy 1,0,0

gmode 2,40,40

;******************************************
pose++
if (pose=3 ){pos x,y:gcopy 2,126,0,40,40}
if (pose=2 ){pos x,y:gcopy 2, 84,0,40,40}
if (pose=1 ){pos x,y:gcopy 2, 42,0,40,40}
if (pose=0 ){pos x,y:gcopy 2, 0,0,40,40}
;************************************** グラフィックの表示
redraw 1
if (pose=3){pose=-1}
;**************************************
goto *main



この記事に返信する


沢渡

リンク

2024/4/19(Fri) 21:30:09|NO.101567

回数指定なしのrepeatはrepeat〜loop間の内容を無限に繰り返すものですから、
そのコードだとloop以降の内容は実行されませんよ?
また、"さかな.bmp"をバッファ1に対してpicloadすると、
"水面.jpg"の内容は消えてしまいますので、
背景用のバッファ2つと、魚用のバッファ1つで、3つのバッファを用意した方が
良いでしょう。

追加された部分を見た感じ、こちらでは「*main」〜「goto *main」の間で
無限ループをさせているようですが(要はrepeat〜loopとやっていることは同じ)、
「背景の切り替え」と「背景の上に魚を表示する処理」を
同じループ内で行うべきかと思います。



ねこ

リンク

2024/4/19(Fri) 22:17:13|NO.101568

返信ありがとうございます。すみません。つまり、mainの中にloopの内容を入れるということでしょうか?
本当にすみません。1週間前に初めて触り始めた人間でして、理解して飲み込む力がまだ育っておらず、どう直せば良いよいのか分かっていません。
loopの内容の中にmainを入れるとか、mainの内容の中にloopを入れるとかという話ではなく、それ以前に全て書き直しでしょうか?



沢渡

リンク

2024/4/20(Sat) 12:14:16|NO.101573

追加された部分につきまして、

gmode 1,480,600 pos 0,0:gcopy 1,0,0
これで、「バッファ1にある背景画像をメインウィンドウにコピーする」という
処理をしているのですから、これの代わりに
「バッファ1の内容とバッファ2の内容を交互にコピーする処理」
を行えば良いのです。
つまりは、repeat〜loopの部分を丸々削除して、

gmode 1,480,600 pos 0,0:gcopy 1,0,0
これを、

pos 0,0 : gcopy target,0,0,640,480 //第4・第5パラメータはウィンドウサイズや画像サイズに応じて変えること target++ if target>2 : target=1
に置き換えれば良いです。
以降の魚の画像をその上に合成表示するくだりでは、
たとえば魚の画像をバッファ3に用意したのなら、
gcopy命令の第1パラメータもそれに合わせて変える必要があります。

後半の内容を書かれたということは、命令の内容についてはわかっていると思いますが、
わからないことがあればエディタからF1キーを押してヘルプを開いて、
そこで調べると良いでしょう。



ねこ

リンク

2024/4/23(Tue) 19:50:28|NO.101619

返信が遅くなり申し訳ございません。
初心者にも分かりやすく教えて下さり本当にありがとうございます。あなたのおかげで、納得のいく課題提出となりました。本当にありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101566への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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