Давайте сделаем рогалик. Глава 47: Победа и поражение

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск
Richard D Clark-Let's Build a WinScreen.png

Возможны только два финальные события для игроков в Подземелье Судьбы. Победа и поражение. Независимо от результата, мы игроку сначала покажем красивую графику, а затем завершим игру. Код разместим после нашего основного цикла.

dod.bas

 ...
    Loop Until done = TRUE
 EndIf
 ClearKeys
 'Отображаем сообщение о смерти.
 If isdead = TRUE Then
    DrawBackground char_dead()
    ckey = pchar.CharName & " has died in the depths of the dungeon."
    PutTextShadow ckey, 20, (txcols / 2) - (Len(ckey) / 2)
    ckey = "Rest in peace valiant warrior!"
    PutTextShadow ckey, 22, (txcols / 2) - (Len(ckey) / 2)
    Sleep
    ClearKeys
    'Создаем файл некролога.
    PrintMorgueFile didwin
 EndIf
 'Отображаем экран победы.
 If didwin = TRUE Then
    DrawBackground char_win()
    ckey = pchar.CharName & " has escaped the dungeon with the Amulet!"
    PutTextShadow ckey, 12, (txcols / 2) - (Len(ckey) / 2)
    ckey = "The Kingdom will be saved! Long live King " & pchar.CharName & "!"
    PutTextShadow ckey, 14, (txcols / 2) - (Len(ckey) / 2)
    ckey = "All Hail King " & pchar.CharName & "!"
    PutTextShadow ckey, 16, (txcols / 2) - (Len(ckey) / 2)
    Sleep
    ClearKeys
    'Создаем файл некролога.
    PrintMorgueFile didwin
 EndIf

Если игрок погибнет, флажок isdead будет установлен и мы покажем экран смерти и распечатаем файл некролога. Если игрок покинет подземелье с амулетом, мы покажем экран победы и также распечатаем некролог. Только одно (или ни одного) из этих условий может быть верно в любое время. Конечно, это ничтожная компенсация игроку за время, потраченное на игру, но мы надеемя, что реальной платой будет то наслаждение, которое игрок получил от игры.