|
|
|
2013/6/30(Sun) 12:54:24|NO.55352
現在、DirectXを用いたリバーシのソフトを作っている最中なのですが、
メニュー画面で矢印キーを押しても項目が移動しない状態です。
下キーを押すと矢印が下へ(一番下なら一番上の項目へ)、
上キーを押すと矢印が上へ(一番上なら一番下の項目へ)いく形にしていく予定です。
矢印キーの挙動はif文でそれぞれやっています。
以下はソースです。
*initialize
#include "hmm.as"
title "ReversiInGensokyo〜限界への挑戦〜"
diinit
ddinit
ddscreen 640,480,1,2
; タイトル表示
await 16
color 0,0,30
boxf 0,0,640,480
color 255,0,0
font "MS ゴシック",32
pos 70,100
mes "ReversiInGensokyo〜限界への挑戦〜"
color 255,255,255
font "MS ゴシック",32
pos 238,330
mes "Push Z Key"
goto *Wait_Z
redraw
*main_title
gosub *Clear_Screen
await 16
color 0,0,30
boxf 0,0,640,480
color 255,0,0
font "MS ゴシック",32
pos 61,95
mes "ReversiInGensokyo〜限界への挑戦〜"
color 255,255,255
font "MS ゴシック",25
pos 263,330
mes "Start"
pos 263,380
mes "???"
pos 263,430
mes "Versus"
goto *select
redraw 0
*Wait_Z
await 16
digetkeystate k,0
if k!1024 {
goto *Wait_Z
}else{
goto *main_title
}
*Clear_Screen
ddcolor 0,0,0
ddboxf 0,0,640,480
return
*select
await 16
font "MS ゴシック",25
a=0
pos 235,330+50*a
mes "⇒"
digetkeystate k,0
if k&2!0{a++}
;if k&1!0{a--}
if a>3{a=0}
if a<0{a=2}
goto *select
メニューにある2つ目の項目は、
セーブデータが1つでもないと表示されないシステムにする予定です。
| |
|
2013/6/30(Sun) 13:44:10|NO.55355
何がしたいのかよくわからなかったので
*initialize
title "ReversiInGensokyo〜限界への挑戦〜"
screen 0,640,480,
; タイトル表示
color 0,0,30
boxf 0,0,640,480
color 255,0,0
font "MS ゴシック",32
pos 70,100
mes "ReversiInGensokyo〜限界への挑戦〜"
color 255,255,255
font "MS ゴシック",32
pos 238,330
mes "Push Z Key"
repeat
getkey key,90
if key : break
wait 10
loop
color
boxf 230,330,420,370
color 255,255,255
font "MS ゴシック",25
pos 263,330
mes "Start"
pos 263,380
mes "???"
pos 263,430
mes "Versus"
repeat
redraw 0
stick houkou
if houkou = 2 {
if a = 0 {
a = 2
} else {
a--
}
}
if houkou = 8{
if a = 2{
a = 0
} else {
a++
}
}
color
boxf 230,330,260,480
color 255,255,255
pos 235,330+50*a
mes "⇒"
redraw 1
await 16
if houkou = 32:break
loop
cls
mes "aは"+a+"です"
hmm.dllの機能を全く使っていなかった(使う意味がなかった)ので使ってないです
|
|
2013/6/30(Sun) 14:38:56|NO.55357
一応かいてみたとおりにはやってみましたが、実行時に白い画面のままになっていました。
(本来は紺色の予定でした)
本来は、上下キーを押したときに矢印が動くはずでしたが、
押しても全く動かなかったので、一か八かここへ質問へ来た次第です。
*initialize
#include "hmm.as"
title "ReversiInGensokyo〜限界への挑戦〜"
screen 640,480,1,2
; タイトル表示
color 0,0,30 ←1つ目の画面ここから
boxf 0,0,640,480
color 255,0,0
font "MS ゴシック",32
pos 70,100
mes "ReversiInGensokyo〜限界への挑戦〜"
color 255,255,255
font "MS ゴシック",32
pos 238,330
mes "Push Z Key" ←1つ目の画面ここまで
repeat
getkey key,90
if key:break;
wait 10
loop
color 0,0,0 ←ここから2つ目の画面
boxf 230,330,420,370
color 255,255,255
font "MS ゴシック",25
pos 263,330
mes "Start" ←案内人が出てきてオープニングステージスタート
pos 263,380
mes "???" ←セーブデータが0のときに選択するとエラーを出す
pos 263,430
mes "Versus" ←ネット通信による2人対戦
repeat
redraw 0
stick houkou
if houkou=2{
if a=0{
a=2
}else{
a--
}
}
if houkou=8{
if a=2{
a=0
}else{
a++
}
}
color 0,0,0
boxf 230,330,260,480
color 255,255,0
pos 235,330+50*a
mes "⇒"
redraw 1
await 16
if houkou=32:break
loop
あまりにも質問し過ぎるとクレクレに思われますので、これでだめなら後は自分でやります。
|
|
2013/6/30(Sun) 15:01:19|NO.55362
screen 640,480,1,2
スクリーンID 640
|
|
2013/6/30(Sun) 15:16:54|NO.55366
確かに、HSPリファレンスのscreen関数の項を参照したところ、正常動作を確認しました。
以降は自力で製作していこうと思います。
ご回答ありがとうございました。
|
|