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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1122
けん画像の点滅表示の実装について15解決


けん

リンク

2009/11/22(Sun) 09:29:01|NO.28937

画像"●"と"○"を交互に表示して点滅させるようにするには、どうしたらよいのですか?
お知恵をお貸し下さい。



この記事に返信する


f(寝起中)

リンク

2009/11/22(Sun) 09:44:01|NO.28938

画像なのかテキストの「●○」なのかはっきりしてくれ・・・。

buffer
picload
gsel
pos
mes
gcopy
if
goto
redraw

この辺の命令組み合わせれば出来るだろ。
意味はエディタで打ってソレにカーソル合わせてF1押せばよいんでね。



Ve

リンク

2009/11/22(Sun) 09:45:40|NO.28939

●と○の画像を縦でも横でも良いから並べて、
イメージとしては、どちらも同じサイズの枠に入るよう並べます。

例えば●の大きさを縦16横16とすれば、
同じサイズの枠に入るように○を並べた画像を作ります。

そして、gcopyで参照する画像の位置を変えます。
アニメパターンの変更タイミングなどはカウンタの変数を用意します。


screen 2 ;buffer 2 color : boxf color 255 circle 0,0,16,16 circle 16,0,32,16,0 screen 0 anicnt=0 ;アニメ用カウンタ ani=0 ;アニメパターン *メインループ redraw 0 color : boxf pos 100,100 gcopy 2,ani*16,0,16,16 redraw 1 anicnt++ if anicnt=10 { if ani=0{ ani=1 }else{ ani=0 } ;初期化 anicnt=0 } wait 1 goto *メインループ



f(寝起中)

リンク

2009/11/22(Sun) 09:48:58|NO.28940

手順
・数字を覚えとく変数を用意。とりあえずAと呼ぶ
・絵の種類を覚えとく変数を用意。とりあえずBと呼ぶ
・AとBを0にする
*
・Aに1を足す
・Aが100を超えていたら、Aを0に戻し、Bに1を足す。結果、Bが1より大きいならBも0にする。
・Bが0なら●表示
・Bが1なら○表示
・*に戻る



f(寝起中)

リンク

2009/11/22(Sun) 09:49:21|NO.28941

む、被ったか・・・。



Ve

リンク

2009/11/22(Sun) 09:49:41|NO.28942

普段、メインウィンドウ非表示でコンパイルしてるから
つい screen 0 を入れてしまった…。

gsel 0 で良いです。



CXplus

リンク

2009/11/22(Sun) 10:03:42|NO.28944

もっとスマートにしたければこんな感じ

screen 2 ;buffer 2 color : boxf color 255 circle 0,0,16,16 circle 16,0,32,16,0 screen 0 anicnt=0 ;アニメ用カウンタ ani=0 ;アニメパターン *メインループ redraw 0 color : boxf pos 100,100 gcopy 2,(anicnt\16)/8*16,0,16,16 redraw 1 anicnt++ wait 1 goto *メインループ



Ve

リンク

2009/11/22(Sun) 10:10:43|NO.28946

>CXplusさん
スクリプト的にはスマートですが、
プログラム的には駄目ですね。



Ve

リンク

2009/11/22(Sun) 10:35:44|NO.28947

CXplusさんのソースだと、
メモリがどんどん増え続けていくので初期化が必要になります。


screen 2 ;buffer 2 color : boxf color 255 circle 0,0,16,16 circle 16,0,32,16,0 screen 0 anicnt=0 ;アニメ用カウンタ *メインループ redraw 0 color : boxf pos 100,100 gcopy 2,(anicnt\16)/8*16,0,16,16 redraw 1 anicnt++ if anicnt>16: anicnt=0 wait 1 goto *メインループ



けん

リンク

2009/11/22(Sun) 11:49:51|NO.28950

>例えば●の大きさを縦16横16とすれば、
>同じサイズの枠に入るように○を並べた画像を作ります。

有り難うございます。
この場合、●と○の画像は別々にあるのですが、これをグラフィックソフトで横に並べた
かたちの画像ファイル(16×16)を作成する必要があるということですね。
こうした画像ファイルを作らないでやる方法はないのでしょうか?
何度もすみません



通りすがり

リンク

2009/11/22(Sun) 14:05:45|NO.28951

>CXplusさんのソースだと、
>メモリがどんどん増え続けていくので初期化が必要になります。
値が増えるだけじゃメモリ使用量は変わらないと思いますよ。
4バイト固定だった気がします。
どちらにせよ、そのままだとオーバーフローしちゃうので初期化は必要ですが。


buffer 2 : mes "○" buffer 3 : mes "●" screen 0,200,200 count=0 *main redraw 0 pos 0,0 : gcopy count/8+2,0,0,30,30 count=(count+1)\16 redraw 1 wait 1 goto *main
各命令のパラメータを変数で管理する術さえ身につければ、難しいことはないはずです。



Ve

リンク

2009/11/22(Sun) 14:16:49|NO.28953

>値が増えるだけじゃメモリ使用量は変わらないと思いますよ。
メモリ使用量を御覧下さい。



足利超神

リンク

2009/11/22(Sun) 14:41:59|NO.28954

自分の環境ではメモリ使用量は8500kあたりで変化なしでした。
int型の変数は4bitかはしらないけど、メモリは固定でありませんでした?
オーバーフローするのは2147483648以上になったときですね。



Ve

リンク

2009/11/22(Sun) 16:19:02|NO.28955

>通りすがりさん
すいません。メモリが増え続けるのはデバッグウィンドウでした。
ただオーバーフローを防ぐ意味で初期化いりますよね。

1パターンずつ画像を読み込むより、1ファイルから参照したほうが利便が良いので
画像同士を同じ画像内に収めたほうが良いと個人的には思います。

パックして実行ファイルを作る時も楽です。

後、問題が解決した場合は書き込み部分の下にある


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

↑ここにチェックして下さい。



名無し

リンク

2009/11/22(Sun) 17:22:21|NO.28956

>1パターンずつ画像を読み込むより、1ファイルから参照したほうが利便が良いので
>画像同士を同じ画像内に収めたほうが良いと個人的には思います。
>パックして実行ファイルを作る時も楽です。
そうですか。そういった理由があったのですね



けん

リンク

2009/11/22(Sun) 17:23:51|NO.28957

>1パターンずつ画像を読み込むより、1ファイルから参照したほうが利便が良いので
>画像同士を同じ画像内に収めたほうが良いと個人的には思います。
>パックして実行ファイルを作る時も楽です。
そうですか。そういった理由があったのですね
名前を入れ忘れました。失礼しました。



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