|
 |
|
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関数の項を参照したところ、正常動作を確認しました。
以降は自力で製作していこうと思います。
ご回答ありがとうございました。
|
|