UniRiddle

      Söö, wer den Beitrag von Mr.SaxoI3eat gelesen hat (Wer wird Millionär?), der weiß, dass ich auch noch ein Rätselskript hier rum liegen hab ;)
      Das Beispielrätsel ist "hingekritzelt", ich denke, ich werde die Tage da mal was Vernünftiges machen... aber es geht ja um das Skript, nicht um die Fragen...
      Von miraus könnt ihr auch eigene Scenarien verfassen und sie hier hochladen!

      Sourcecode

      AutoIt-Quellcode

      1. #cs ----------------------------------------------------------------------------
      2. AutoIt Version: 3.3.6.1
      3. Author: chesstiger
      4. Script Function:
      5. ---
      6. #ce ----------------------------------------------------------------------------
      7. #include <StaticConstants.au3>
      8. #include <GUIConstants.au3>
      9. #include <Misc.au3>
      10. #include <File.au3>
      11. Dim $FOLDERS
      12. $FOLDERS = _FileListToArray(@ScriptDir & "\scenarios\","*",2)
      13. $COUNTER_ONE = 0
      14. $RETURN_FOLDER = ""
      15. Do
      16. $COUNTER_ONE+=1
      17. $RETURN_FOLDER = $RETURN_FOLDER & '"' & $FOLDERS[$COUNTER_ONE] & '"' & @CR
      18. Until $COUNTER_ONE = $FOLDERS[0]
      19. While 1
      20. $NAMEOFSCENE = InputBox("UniRiddle","Scenarioname:")
      21. If @Error = 1 Then Exit
      22. $SCENARIO = "scenarios\" & $NAMEOFSCENE & "\scene.ini"
      23. If FileExists ($SCENARIO) Then ExitLoop
      24. MsgBox(48,"UniRiddle","Scenario existiert nicht!" & @CR & @CR & "Verfügbare Scenarien:" & @CR & $RETURN_FOLDER)
      25. WEnd
      26. $COUNTER = 0
      27. ;MAINGUI
      28. $MAINGUI = GUICreate("UniRiddle",300,300)
      29. $NAME = GUICtrlCreateLabel("",15,0,270,25,$SS_CENTER)
      30. GUICtrlSetFont($NAME,16)
      31. $TITLEIMAGE = GUICtrlCreatePic("",100,50,100,100)
      32. $DESCRIPTION = GUICtrlCreateLabel("",10,175,280,50,$SS_CENTER)
      33. $AUTHOR = GUICtrlCreateLabel("",10,225,280,60,$SS_CENTER)
      34. $GO = GUICtrlCreateButton("Beginnen",0,280,275,20)
      35. $CREDITS = GUICtrlCreateButton("Info",275,280,25,20)
      36. GUISetState()
      37. GUICtrlSetData($NAME,IniRead($SCENARIO,"MAIN","NAME",0))
      38. GUICtrlSetImage($TITLEIMAGE,"scenarios\" & $NAMEOFSCENE & "\pic\" & IniRead($SCENARIO,"MAIN","TITLEIMAGE",0))
      39. GUICtrlSetData($DESCRIPTION,IniRead($SCENARIO,"MAIN","DESCRIPTION",0))
      40. GUICtrlSetData($AUTHOR,"Autor: " & IniRead($SCENARIO,"MAIN","AUTHOR",0) & @CRLF & "Version: " & IniRead($SCENARIO,"MAIN","VERSION",0) & @CRLF & "Datum: " & IniRead($SCENARIO,"MAIN","DATE",0))
      41. While 1
      42. $mainmsg = GUIGetMsg()
      43. Select
      44. Case $mainmsg = $GO
      45. ExitLoop
      46. Case $mainmsg = $GUI_EVENT_CLOSE
      47. Exit
      48. Case $mainmsg = $CREDITS
      49. MsgBox(32,"UniRiddle","UniRiddle ist ein Projekt von: chesstiger" & @CR & "Scenario-Ordner einfach nach 'scenarios' verschieben und den Namen bei der Startsequenz eingeben!" & @CR & @CR & "UniRiddle-Version: 0.2")
      50. EndSelect
      51. WEnd
      52. GUIDelete($MAINGUI)
      53. GUICreate("UniRiddle",300,300)
      54. $QUEST = GUICtrlCreateLabel("QUEST",10,10,280,50)
      55. $A = GUICtrlCreateButton("A",0,180,300,30)
      56. $B = GUICtrlCreateButton("B",0,210,300,30)
      57. $C = GUICtrlCreateButton("C",0,240,300,30)
      58. $D = GUICtrlCreateButton("D",0,270,300,30)
      59. $PIC = GUICtrlCreatePic("",100,50,100,100)
      60. GUISetState()
      61. $COUNT_SECTIONS = IniReadSectionNames($SCENARIO)
      62. Do
      63. $COUNTER+=1
      64. _NewQuest("QUEST_" & $COUNTER)
      65. Until $COUNTER = $COUNT_SECTIONS[0] - 1
      66. MsgBox(0,"UniRiddle",IniRead($SCENARIO,"MAIN","WINTEXT",0))
      67. Func _NewQuest($SECTION)
      68. #cs
      69. If IniRead($SCENARIO,$SECTION,"ENABLE",0) = 3 Then
      70. GUICtrlSetState($D,$GUI_DISABLE)
      71. EndIf
      72. If IniRead($SCENARIO,$SECTION,"ENABLE",0) = 2 Then
      73. GUICtrlSetState($A,$GUI_DISABLE)
      74. GUICtrlSetState($D,$GUI_DISABLE)
      75. EndIf
      76. If IniRead($SCENARIO,$SECTION,"ENABLE",0) = 1 Then
      77. GUICtrlSetState($B,$GUI_DISABLE)
      78. GUICtrlSetState($C,$GUI_DISABLE)
      79. GUICtrlSetState($D,$GUI_DISABLE)
      80. EndIf
      81. #ce
      82. GUICtrlSetState($A,$GUI_DISABLE)
      83. GUICtrlSetState($B,$GUI_DISABLE)
      84. GUICtrlSetState($C,$GUI_DISABLE)
      85. GUICtrlSetState($D,$GUI_DISABLE)
      86. If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"A") <> 0 Then GUICtrlSetState($A,$GUI_ENABLE)
      87. If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"B") <> 0 Then GUICtrlSetState($B,$GUI_ENABLE)
      88. If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"C") <> 0 Then GUICtrlSetState($C,$GUI_ENABLE)
      89. If StringInStr(IniRead($SCENARIO,$SECTION,"ENABLE","0"),"D") <> 0 Then GUICtrlSetState($D,$GUI_ENABLE)
      90. If IniRead($SCENARIO,$SECTION,"ENABLE","0") = "" Or IniRead($SCENARIO,$SECTION,"ENABLE","0") = "0" Then
      91. GUICtrlSetState($A,$GUI_ENABLE)
      92. GUICtrlSetState($B,$GUI_ENABLE)
      93. GUICtrlSetState($C,$GUI_ENABLE)
      94. GUICtrlSetState($D,$GUI_ENABLE)
      95. EndIf
      96. GUICtrlSetData($QUEST,IniRead($SCENARIO,$SECTION,"QUEST",0))
      97. GUICtrlSetData($A,IniRead($SCENARIO,$SECTION,"A",0))
      98. GUICtrlSetData($B,IniRead($SCENARIO,$SECTION,"B",0))
      99. GUICtrlSetData($C,IniRead($SCENARIO,$SECTION,"C",0))
      100. GUICtrlSetData($D,IniRead($SCENARIO,$SECTION,"D",0))
      101. GUICtrlSetImage($PIC,"scenarios\" & $NAMEOFSCENE & "\pic\" & IniRead($SCENARIO,$SECTION,"PIC",0))
      102. While 1
      103. $msg = GUIGetMsg()
      104. If WinActive("UniRiddle") <> 0 Then
      105. If _IsPressed("41") Then
      106. $ANSWER = "A"
      107. Sleep(200)
      108. ExitLoop
      109. EndIf
      110. If _IsPressed("42") Then
      111. $ANSWER = "B"
      112. Sleep(200)
      113. ExitLoop
      114. EndIf
      115. If _IsPressed("43") Then
      116. $ANSWER = "C"
      117. Sleep(200)
      118. ExitLoop
      119. EndIf
      120. If _IsPressed("44") Then
      121. $ANSWER = "D"
      122. Sleep(200)
      123. ExitLoop
      124. EndIf
      125. EndIf
      126. Select
      127. Case $msg = $GUI_EVENT_CLOSE
      128. Exit
      129. Case $msg = $A
      130. $ANSWER = "A"
      131. ExitLoop
      132. Case $msg = $B
      133. $ANSWER = "B"
      134. ExitLoop
      135. Case $msg = $C
      136. $ANSWER = "C"
      137. ExitLoop
      138. Case $msg = $D
      139. $ANSWER = "D"
      140. ExitLoop
      141. EndSelect
      142. WEnd
      143. If $ANSWER <> IniRead($SCENARIO,$SECTION,"NEXT",0) Then
      144. If IniRead($SCENARIO,$SECTION,"ENDTEXT","0") = "AUTO" Then
      145. MsgBox(0,"UniRiddle",IniRead($SCENARIO,"MAIN","ENDTEXT_AUTO",0))
      146. ElseIf IniRead($SCENARIO,$SECTION,"ENDTEXT","0") <> "0" THen
      147. MsgBox(0,"UniRiddle",IniRead($SCENARIO,$SECTION,"ENDTEXT",0))
      148. EndIf
      149. If IniRead($SCENARIO,"MAIN","DEBUG","FALSE") <> "TRUE" Then Exit
      150. EndIf
      151. If IniRead($SCENARIO,$SECTION,"NEXTTEXT","0") = "AUTO" Then
      152. MsgBox(0,"UniRiddle",IniRead($SCENARIO,"MAIN","NEXTTEXT_AUTO",0))
      153. ElseIf IniRead($SCENARIO,$SECTION,"NEXTTEXT","0") <> "0" Then
      154. MsgBox(0,"UniRiddle",IniRead($SCENARIO,$SECTION,"NEXTTEXT",0))
      155. EndIf
      156. GUICtrlSetImage($PIC,"")
      157. GUICtrlSetState($A,$GUI_ENABLE)
      158. GUICtrlSetState($B,$GUI_ENABLE)
      159. GUICtrlSetState($C,$GUI_ENABLE)
      160. GUICtrlSetState($D,$GUI_ENABLE)
      161. EndFunc



      Edit: Mein Browser will grad nicht, der SC ist verhunzt :(

      Und im Anhang das ganze nochmal als Zipfile, mit Beispiel etc... ;)

      lg chess

      Update:
      Ein klein wenig am Sourcecode verändert und UniRiddleEx.zip hochgeladen.
      UniRiddleEx.zip enthält (bis jetzt) nur das Szenario "ctGeschichte", wird aber noch erweitert. ;)

      chess
      Dateien
      • UniRiddle.zip

        (5,61 kB, 62 mal heruntergeladen, zuletzt: )
      • UniRiddleEx.zip

        (6,61 kB, 51 mal heruntergeladen, zuletzt: )
      [Tutorial] Sauber Programmieren
      Rainbow Dash
      "EMP Granate im Apple-Store!"

      James1337 (22.09.2012, 16:46)


      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „chesstiger“ ()

      Danke und genau, das ist der Sinn hinter der Sache! ;)
      Universell... Ursprünglich war das als eine Art... Szenarioplayer geplant, zb. "Du stehst vor einem alten Haus. Die Tür ist offen, auf der Treppe ist Blut. Was tust du?". Sieht man auch noch... Scenario etc..

      Ich arbeite gerade an einem Geschichte-Paket und an einem AutoIt-Paket...
      Mal gucken, wahrscheinlich wirds Morgen oder in einer Woche fertig, kommt drauf an...

      Wird dann hier zum Download bereitgestellt, Rätselpakete von euch sind auch willkommen :P

      lg chess
      [Tutorial] Sauber Programmieren
      Rainbow Dash
      "EMP Granate im Apple-Store!"

      James1337 (22.09.2012, 16:46)


      Ich hab schon über beides, was du angesprochen hast, also Scenario-Maker & das mit dem Schließen nachgedacht^^
      Aber wie gesagt: Es war ursprünglich für so Szenarien wie zb. Scottland Yard, Sherlock Holmes u.Ä. in der Richtung gedacht, wo es bei falscher Antwort halt nicht weitergehen darf...
      Aber UniRiddle ist ja eh kein Szenario-Programm geworden, sondern ein... Rätselprogramm halt, deswegen werd ich das, bzw. beides umsetzen ;)

      Danke für den Kommentar :p

      lg chess
      [Tutorial] Sauber Programmieren
      Rainbow Dash
      "EMP Granate im Apple-Store!"

      James1337 (22.09.2012, 16:46)


    autoit.de Webutation