Sry, habe erst jetzt gesehen, dass noch jemand was dazu geschrieben hat, falls du den Source noch sehen möchtest, bitte schön:
Code: Alles auswählen
;Projekt: Wuschel - Tamagotchi Clon
;Author: skey-z
;{ Define Vars
Enumeration
#win_main
#win_screen
#menu
#menu_new
#menu_quit
#menu_feed
#menu_play
#menu_clean
#menu_sleep
#menu_help
#menu_info
#gad_status
#spr_emo0
#spr_emo1
#spr_emo2
#spr_eat
#spr_play
#spr_clean
#spr_sleep
EndEnumeration
Global event.l
Global quit.b
Global stat_eat.b
Global stat_clean.b
Global stat_play.b
Global stat_sleep.b
Global ico_eat.l
Global ico_clean.l
Global ico_play.l
Global ico_sleep.l
Global dead.b
Global max.b = 100
Global t_start.l = ElapsedMilliseconds()
Dim emo(2)
Global emotion.b
;}
;{ Create Window
If InitSprite() = 0
MessageRequester("Error", "Can't initialize screen & sprites", 0)
End
EndIf
If OpenWindow(#win_main, 0, 0, 210, 250, "Wuschel", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#win_main))
;{ Menu
If CreateMenu(#menu, WindowID(#win_main))
MenuTitle("Spiel")
MenuItem(#menu_new, "Neues Spiel")
MenuBar()
MenuItem(#menu_quit, "Beenden")
MenuTitle("Aktion")
MenuItem(#menu_feed, "Füttern")
MenuItem(#menu_play, "Spielen")
MenuItem(#menu_clean, "Säubern")
MenuItem(#menu_sleep, "Schlafen")
MenuTitle("Hilfe")
MenuItem(#menu_help, "FAQ")
MenuItem(#menu_info, "Info")
EndIf
;}
;{ Status Bar
If CreateStatusBar(#gad_status, WindowID(#win_main))
AddStatusBarField(45)
AddStatusBarField(55)
AddStatusBarField(55)
AddStatusBarField(55)
EndIf
;}
;{ Window Screen & Sprites
If OpenWindowedScreen(WindowID(#win_main), 5, 0, 200, 200, 0, 0, 22)
spr_eat = LoadSprite(#spr_eat, "ico_eat.bmp")
TransparentSpriteColor(#spr_eat, RGB(255,0,255))
spr_play = LoadSprite(#spr_play, "ico_play.bmp")
TransparentSpriteColor(#spr_play, RGB(255,0,255))
spr_clean = LoadSprite(#spr_clean, "ico_clean.bmp")
TransparentSpriteColor(#spr_clean, RGB(255,0,255))
spr_sleep = LoadSprite(#spr_sleep, "ico_sleep.bmp")
TransparentSpriteColor(#spr_sleep, RGB(255,0,255))
For i = 0 To 2
emo(i) = LoadSprite((#spr_emo0+i), "emo_" + Str(i) +".bmp")
TransparentSpriteColor((#spr_emo0+i), RGB(255,0,255))
Next
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
End
EndIf
;}
EndIf
;}
Repeat
;{ Event Handling
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Menu
;{ Menu auswahl
Select EventMenu()
Case #menu_new
stat_eat = 0
stat_play = 0
stat_clean = 0
stat_sleep = 0
frame = 0
dead = #False
Case #menu_quit
End
Case #menu_feed : stat_eat -25
Case #menu_play : stat_play -25
Case #menu_clean : stat_clean -25
Case #menu_sleep : stat_sleep -25
Case #menu_help
MessageRequester("FAQ", "Ein Wuschel ist ein virtuelles Hasutier. Es möchte gefüttert und unterhalten werden," + Chr(10) + "du musst es sauber halten und zwischendurch möchte es auch einmal schlafen" + Chr(10) + "Kommst du diesen Verpflichtungen nicht nach, wird es dir verenden" + Chr(10) + "Der Maximalwert jedes Attributes liegt bei 100")
Case #menu_info
MessageRequester("INFO", "Projekt: Wuschel" + Chr(10) + "Version : 1.0" +Chr(10) + "Autor: Sascha Kruse")
EndSelect
;}
EndSelect
Until event = 0
;}
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
;{ Emotion
If (stat_eat => max) Or (stat_play => max) Or (stat_clean => max) Or (stat_sleep => max)
If Not dead
MessageRequester("OH NEIN!!!", "Dein Wuschel ist verendet" + Chr(10) + "Du bist ein schlechter Pfleger")
EndIf
emotion = 2
dead = #True
ElseIf (stat_eat => 50) Or (stat_play => 50) Or (stat_clean => 50) Or (stat_sleep => 50)
emotion = 1
Else
emotion = 0
EndIf
DisplayTransparentSprite((#spr_emo0+emotion), 0, 0)
;}
;{ Timer
If (ElapsedMilliseconds()-t_start > 500)
t_start = ElapsedMilliseconds()
;{ frames
If Not dead
Select frame
Case 1 : stat_eat +10
Case 2 : stat_play +5
Case 3 : stat_clean +2
Case 4 : stat_sleep +1
Case 5 : frame = 0
EndSelect
frame +1
EndIf
;}
EndIf
;}
;{ StatusBar Text
StatusBarText(#gad_status, 0, "eat:" + Str(stat_eat), #PB_StatusBar_Center)
StatusBarText(#gad_status, 1, "play:" + Str(stat_play), #PB_StatusBar_Center)
StatusBarText(#gad_status, 2, "clean:" + Str(stat_clean), #PB_StatusBar_Center)
StatusBarText(#gad_status, 3, "sleep:" + Str(stat_sleep), #PB_StatusBar_Center)
;}
;{ EAT
If (stat_eat => 75)
DisplayTransparentSprite(#spr_eat, 2, 2)
ElseIf (stat_eat => 50) And (ElapsedMilliseconds()-t_start < 250)
DisplayTransparentSprite(#spr_eat, 2, 2)
ElseIf (stat_eat < 0)
stat_eat = 0
EndIf
;}
;{ PLAY
If (stat_play => 75)
DisplayTransparentSprite(#spr_play, 22, 2)
ElseIf (stat_play => 50) And (ElapsedMilliseconds()-t_start < 250)
DisplayTransparentSprite(#spr_play, 22, 2)
ElseIf (stat_play < 0)
stat_play = 0
EndIf
;}
;{ CLEAN
If (stat_clean => 75)
DisplayTransparentSprite(#spr_clean, 42, 2)
ElseIf (stat_clean => 50) And (ElapsedMilliseconds()-t_start < 250)
DisplayTransparentSprite(#spr_clean, 42, 2)
ElseIf (stat_clean < 0)
stat_clean = 0
EndIf
;}
;{ SLEEP
If (stat_sleep => 75)
DisplayTransparentSprite(#spr_sleep, 62, 2)
ElseIf (stat_sleep => 50) And (ElapsedMilliseconds()-t_start < 250)
DisplayTransparentSprite(#spr_sleep, 62, 2)
ElseIf (stat_sleep < 0)
stat_sleep = 0
EndIf
;}
Delay(5)
ForEver
Else
MessageRequester("Error", "Unable to create window")
EndIf