init python:
time_left = 10
is_modal = True
def decrease_time():
global time_left, is_modal
if time_left > 0:
time_left -= 1
if time_left == 0:
is_modal = False
# いったんscreenを隠して、再度表示
renpy.hide_screen("show_timer")
renpy.call_in_new_context("display_timer_screen_again")
label display_timer_screen_again:
show screen show_timer
return
screen show_timer():
modal is_modal
vbox:
align (0.5, 0.4)
text "残り時間: [time_left] 秒"
spacing 20
timer 1.0 action Function(decrease_time) repeat (time_left > 0)
label start:
$ time_left = 10
$ is_modal = True
show screen show_timer
"タイマー終了。"
hide screen show_timer
概要
このコードは、Ren'Py(ビジュアルノベルエンジン)上で使うカウントダウンタイマー付き画面を実現するものです。
プレイヤーの操作を一時的に制限する「モーダル」な状態で、残り時間(秒数)を表示し、1秒ごとに時間を減らしていきます。タイマーが0になるとモーダル状態を解除し、画面の再表示も含めた制御を行った後、タイマー終了メッセージを表示します。
主な特徴や用途:
- ゲーム内で「一定時間だけ操作を受け付けない」場面や、選択肢・時間制限イベントの演出に使えます。
- 残り時間をプレイヤーに示すタイマー画面、タイマー終了時の画面再描画処理などをセットで提供しており、Ren’Pyスクリプト特有の画面管理やタイマー処理を自動化しています。
1. decrease_time 関数
概要
制限時間を1秒ずつ減らしていき、ゼロになったらモーダル状態を解除し、タイマー用画面を再表示する処理関数。
定義
def decrease_time():
global time_left, is_modal
if time_left > 0:
time_left -= 1
if time_left == 0:
is_modal = False
# いったんscreenを隠して、再度表示
renpy.hide_screen("show_timer")
renpy.call_in_new_context("display_timer_screen_again")
引数
- なし
グローバル変数
-
time_left(残り時間を示す整数) -
is_modal(タイマーウィンドウをモーダル表示にするかのブール値)
戻り値
- なし
詳細
- 残り時間が0より大きい場合、
time_leftを1減らします。 -
time_leftが0になった場合、タイマー画面(show_timer)を非表示にし、ラベルdisplay_timer_screen_againを新しいコンテキストで呼び出します。 - モーダル状態も解除されます(
is_modal = False)。
2. display_timer_screen_again ラベル
概要
タイマー画面(show_timer画面)を再度表示するためのラベル(ジャンプ先、コールインポイント)。
定義
label display_timer_screen_again:
show screen show_timer
return
引数
- なし
戻り値
- なし (
returnで終了)
詳細
-
show screen show_timerで再度タイマーウィンドウを表示します。 - 特別な引数や戻り値はありません。
3. show_timer スクリーン
概要
現在の残り時間を表示するタイマー画面。モーダル設定が反映されます。
定義
screen show_timer():
modal is_modal
vbox:
align (0.5, 0.4)
text "残り時間: [time_left] 秒"
spacing 20
timer 1.0 action Function(decrease_time) repeat (time_left > 0)
下記の関数仕様書に従って、前述のプログラムの関数仕様書を書いていただけますか。
概要
このコードは、Ren'Py(ビジュアルノベルエンジン)上で使うカウントダウンタイマー付き画面を実現するものです。
プレイヤーの操作を一時的に制限する「モーダル」な状態で、残り時間(秒数)を表示し、1秒ごとに時間を減らしていきます。タイマーが0になるとモーダル状態を解除し、画面の再表示も含めた制御を行った後、タイマー終了メッセージを表示します。
主な特徴や用途:
- ゲーム内で「一定時間だけ操作を受け付けない」場面や、選択肢・時間制限イベントの演出に使えます。
- 残り時間をプレイヤーに示すタイマー画面、タイマー終了時の画面再描画処理などをセットで提供しており、Ren’Pyスクリプト特有の画面管理やタイマー処理を自動化しています。
1. decrease_time 関数
概要
制限時間を1秒ずつ減らしていき、ゼロになったらモーダル状態を解除し、タイマー用画面を再表示する処理関数。
定義
def decrease_time():
global time_left, is_modal
if time_left > 0:
time_left -= 1
if time_left == 0:
is_modal = False
# いったんscreenを隠して、再度表示
renpy.hide_screen("show_timer")
renpy.call_in_new_context("display_timer_screen_again")
引数
- なし
グローバル変数
-
time_left(残り時間を示す整数) -
is_modal(タイマーウィンドウをモーダル表示にするかのブール値)
戻り値
- なし
詳細
- 残り時間が0より大きい場合、
time_leftを1減らします。 -
time_leftが0になった場合、タイマー画面(show_timer)を非表示にし、ラベルdisplay_timer_screen_againを新しいコンテキストで呼び出します。 - モーダル状態も解除されます(
is_modal = False)。
2. display_timer_screen_again ラベル
概要
タイマー画面(show_timer画面)を再度表示するためのラベル(ジャンプ先、コールインポイント)。
定義
label display_timer_screen_again:
show screen show_timer
return
引数
- なし
戻り値
- なし (
returnで終了)
詳細
-
show screen show_timerで再度タイマーウィンドウを表示します。 - 特別な引数や戻り値はありません。
3. show_timer スクリーン
概要
現在の残り時間を表示するタイマー画面。モーダル設定が反映されます。
定義
screen show_timer():
modal is_modal
vbox:
align (0.5, 0.4)
text "残り時間: [time_left] 秒"
spacing 20
timer 1.0 action Function(decrease_time) repeat (time_left > 0)
引数
- なし(screen propertyあり:なし)
コンポーネント
-
modal is_modal
画面をモーダルとして動作させる(is_modalがTrueのときクリックや入力をブロック) -
vbox/align/text
画面中央付近に「残り時間: ○秒」のテキストを表示 -
timer
1秒ごとにdecrease_timeを呼び、残り時間が0になるまで繰り返す
4. start ラベル(エントリーポイント)
概要
プレイ開始時の初期化ラベル。残り時間とモーダル状態の初期化、およびタイマー画面の表示と非表示を制御。
定義
label start:
$ time_left = 10
$ is_modal = True
show screen show_timer
"タイマー終了。"
hide screen show_timer
詳細
-
time_leftを10秒、is_modalをTrueにリセット - タイマー画面を表示 (
show screen show_timer) - タイマーが終了したらメッセージを表示
- タイマー画面を非表示に (
hide screen show_timer)
全体の動作フロー
-
startラベルでタイマー10秒・モーダルONで画面開始。 -
show_timer画面が出ると1秒ごとにdecrease_timeが呼ばれる。 - タイマーが0になったら
is_modalがFalseになり、一度画面を隠してからdisplay_timer_screen_againラベル経由で再表示。 - 表示後、終了テキスト「タイマー終了。」を表示して画面非表示。