BCC #59 - Würfelspiel

Übersicht Sonstiges Projekte

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Blitzcraft

BeitragMo, Jan 16, 2012 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Lesen hilft Wink

Überfliegen nur teilweise Rolling Eyes

Ich hätte da auch schon ne klasse Idee( Smile ), weis nur nich ob ich es schaff die in so kurzer
Zeit umzusetzen( Sad )
Screenshot aus meinem ersten Projekt
 

LordCoder

BeitragDi, Jan 17, 2012 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
darth

Cooler würfel, aber die 2 und die 3 müssten doch anders angeordnet werden?
(Zumindest, damit es noch realistischer ist, falls du das möchtest)
3:

__0
_0_
0__

2:

__0
___
0__
3. Platz BCC #60

hazumu-kun

BeitragDo, Jan 19, 2012 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich bin fertig, das Programm sollte als Sourcecode bereitgestellt werden, oder?

EDIT: Anscheinend ja. Dann wünsche ich Euch viel Spaß und Glück beim Würfeln!
BlitzBasic: [AUSKLAPPEN]
; #### Mikro Chuck-a-Luck für den BCC 59
; ## Autor: Viken Emesh / hazumu-kun
; ## Homepage: vikenemesh.bplaced.net
; ****

;[Block] #### Consts
Const VK_ESC= $1B

Const FPS= 30
Const APP_TITLE$= "µ-Chuck-a-Luck by hazumu-kun"
Const APP_WIDTH= 300
Const APP_HEIGHT= 185

Const BANKROLL_START= 250
;[End] ****

Type Die
Field id
Field number
Field x,y
End Type

;[Block] #### Globals
Global tim_fps
Global app_running

Global win_main
Global can_main
Global buff_can

Global but_roll
Dim rbut_number(5)
Global but_bet
Global lab_bet
Global tf_bet
Global lab_number
Global but_pay

Global font_main
Global font_big

Global bankroll=BANKROLL_START
Global set_number
Global set_amount
;[End] ****

Local i

;[Block] #### GUI-Init
AppTitle APP_TITLE$
win_main= CreateWindow (APP_TITLE$,0,0,APP_WIDTH+10,APP_HEIGHT+10,0,33)
HideGadget win_main
CenterWindow (win_main)
AddMinimizeButton (win_main)
HideGadget win_main

can_main= CreateCanvas (5,5,APP_WIDTH,APP_HEIGHT,win_main)
buff_can= CanvasBuffer (can_main)
SetBuffer buff_can
ClsColor 240,240,240

font_main= LoadFont ("Arial",20,1)
font_big= LoadFont ("Arial",30,1)
SetFont font_big

lab_number= CreateLabel ("Setzten auf:",5,5,100,15,can_main)
SetGadgetFont lab_number,font_main

For i= 1 To 6
rbut_number(i-1)= CreateButton (i,5+40*((i-1) Mod 3),25+20*Ceil((i-1)/3),30,15,can_main,3)
SetGadgetFont rbut_number(i-1),font_main
Next

lab_bet= CreateLabel ("Einsatz: ",125,5,70,16,can_main)
SetGadgetFont lab_bet,font_main

tf_bet= CreateTextField (125,29,70,25,can_main)
SetGadgetFont tf_bet,font_main

but_bet= CreateButton ("Setzten",200,5,100,55,can_main)
SetGadgetFont but_bet,font_main

but_roll= CreateButton ("Würfeln",200,65,100,55,can_main)
SetGadgetFont but_roll,font_main


but_pay= CreateButton ("Auszahlen",200,125,100,55,can_main)
SetGadgetFont but_pay, font_main

tim_fps= CreateTimer (FPS)

DisableGadget but_roll
DisableGadget but_pay
ShowGadget win_main
;[End] ****

;[Block] #### Dice-Init
For i= 0 To 2
CreateDie (5+i*(5+60),65)
Next
;[End] ****

;[Block] #### Mainloop
app_running= 1
While app_running
; Damit man per ESC beenden kann, falls ein Gadget den Fokus hat
If RAW_KeyDown (VK_ESC) Then app_running=0

Select WaitEvent ()
Case $102 ;KeyUp
Select EventData()
Case 1 ;ESC
app_running= 0
End Select

Case $401 ;GadgetAction
Select EventSource()
Case but_bet
If Bet() Then
DisableGadget but_bet
EnableGadget but_roll
EndIf

Case but_roll
Roll()
DisableGadget but_roll
EnableGadget but_pay

Case but_pay
Pay()
DisableGadget but_pay
EnableGadget but_bet

End Select

Case $803 ;WindowClose
app_running= 0

Case $4001 ;TimerTick
Draw()
End Select

Wend
;[End] ****

AEnd()

Function Draw()
; ## Alles zeichnen
Cls
DrawDice()
Color 0,0,0
Text 5,125,"Konto: "
Text 5,155,"$"+bankroll

FlipCanvas can_main,0

Return
End Function

Function Bet()
; ## Den Einsatz tätigen
Local i

set_number= 0
For i= 0 To 5
If ButtonState (rbut_number(i)) Then set_number= i+1
Next

If set_number Then
set_amount= Int(TextFieldText$(tf_bet))
If Not(set_amount<=0 Or set_amount>bankroll) Then
bankroll= bankroll-set_amount
Return 1
EndIf
EndIf

Return 0
End Function

Function Pay()
; ## Auszahlen, falls Gewinn
Local cd.Die
Local count
For cd=Each Die
If cd\number= set_number Then count=count+1
Next

bankroll= bankroll+set_amount*count*count

If bankroll=0 Then
Gameover()
EndIf

Return
End Function

Function Roll()
; ## Alle Würfel werfen
SeedRnd MilliSecs()

Local rdie.Die
Local number

For rdie= Each Die
rdie\number= Rand (1,6)
Next

Return
End Function

Function Gameover()
; ## Spielende
Local act

AppTitle "Game Over"
act= Proceed("Du hast kein Geld mehr! Neustarten?")
AppTitle APP_TITLE$
If act=1 Then
bankroll= BANKROLL_START
Else
app_running= 0
EndIf

Return
End Function

Function DrawDice()
; ## Alle Würfel zeichnen
Local ddie.Die

For ddie= Each Die
Color 255,200,200
Rect ddie\x,ddie\y,55,55,1

Color 0,0,0
If (ddie\number= 2) Or (ddie\number= 3) Or (ddie\number= 4) Or (ddie\number= 5) Or (ddie\number= 6) Then
Oval ddie\x+5,ddie\y+5,10,10,1
EndIf

If (ddie\number= 4) Or (ddie\number= 5) Or (ddie\number= 6) Then
Oval ddie\x+40,ddie\y+5,10,10,1
EndIf

If (ddie\number= 6) Then
Oval ddie\x+5,ddie\y+28-5,10,10,1
Oval ddie\x+40,ddie\y+28-5,10,10,1
EndIf

If (ddie\number= 1) Or (ddie\number= 3) Or (ddie\number= 5) Then
Oval ddie\x+28-5,ddie\y+28-5,10,10,1
EndIf

If (ddie\number= 4) Or (ddie\number= 5) Or (ddie\number= 6) Then
Oval ddie\x+5,ddie\y+40,10,10,1
EndIf

If (ddie\number= 2) Or (ddie\number= 3) Or (ddie\number= 4) Or (ddie\number= 5) Or (ddie\number= 6) Then
Oval ddie\x+40,ddie\y+40,10,10,1
EndIf
Next

Return
End Function

Function CreateDie.Die (x,y,number=1)
; ## Einen neuen Würfel erstellen
Local ndie.Die= New Die
ndie\id= CountDice()+1
ndie\number= number
ndie\x= x
ndie\y= y

Return ndie
End Function

Function CountDice()
; ## Alle vorhandenen Würfel zählen
Local cdie.Die
Local n
For cdie= Each Die
n=n+1
Next

Return n
End Function

Function AEnd (exitcode=0)
; ## Sauberes Beenden unter Windows 7
api_ExitProcess exitcode
End Function

Function RAW_KeyDown (VirtualKey, IgnoreFocus= False)
; ## Diese Funktion ermöglicht die Abfrage der ESC-Taste, selbst wenn ein Gadget Fokus hat.

; Hier bitte das "Return False" als Platzhalter aktivieren und den Rest
; auskommentieren falls die nötigen WinAPI Decls nicht installiert sind.
;Return False
If (IgnoreFocus= True) And (api_GetActiveWindow()= 0) Then Return

Return (api_GetAsyncKeyState (VirtualKey) And %1000000000000000)> 0
End Function

Function AddMinimizeButton (window)
; ## Auch diese Funktion kann komplett entfernt werden,
; ## wenn keine Decls installiert sind.
Local window_hwnd
Local window_oldstyle

If window=0 Then
window_hwnd= api_GetForegroundWindow()
Else
window_hwnd= QueryObject(window,1)
EndIf

window_oldstyle= api_GetWindowLong (window_hwnd,(-16))

api_SetWindowLong (window_hwnd, -16, window_oldstyle Or $00020000)

HideGadget window
ShowGadget window
End Function

Function CenterWindow (fwinhndl)
Local fwinh, fwinw, fdesk, fdeskw, fdeskh

fwinw= ClientWidth (fwinhndl)
fwinh= ClientHeight (fwinhndl)
fdesk= Desktop()
fdeskw= ClientWidth(fdesk)
fdeskh= ClientHeight(fdesk)
SetGadgetShape fwinhndl,(fdeskw-fwinw)/2,(fdeskh-fwinh)/2,fwinw,fwinh
End Function
Der verwendete Compiler ist BlitzPlus, es werden ein paar WinAPI Funktionen benutzt um dem Fenster einen "Minimieren"-Button zu geben ohne es skalierbar zu machen und um eine, vom Tastaturfokus unabhängige, Abfrage auf ESC durchzuführen. Beide Funktionen können wegeditiert werden, das Programm läuft trotzdem.

Falls der kleine Teil an WinAPI ein Regelverstoß ist entferne ich das noch rechtzeitig. Bitte melde dich, Holzchopf!

Zum Spiel selber gibt es zu sagen:
http://de.wikipedia.org/wiki/Chuck-a-luck

Hier noch das Paket mit Sourcecode und vorkompiliertem Programm:
https://www.blitzforum.de/upload/file.php?id=11364

Holzchopf

Meisterpacker

BeitragDo, Jan 19, 2012 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hazumu-kun hat Folgendes geschrieben:
Falls der kleine Teil an WinAPI ein Regelverstoß ist entferne ich das noch rechtzeitig. Bitte melde dich, Holzchopf!


Das geht schon in Ordnung so. Scheint ja kein grosser Eingriff zu sein...

Das Spiel selber schaue ich mir später an, ich habe gerade nicht so viel zeit, wollte mich aber kurz melden und mich melden Wink

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xeres

Moderator

BeitragSa, Jan 21, 2012 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Unit42
user posted image

  • 16 Farben (inklusive schwarz)
  • 4 wählbare Klassen
  • Ingame Tutorial
  • Eine Kampagne mit überraschender Entwicklung!
  • Extra: Die ARENA für Leute, die eine Herausforderung suchen
  • Karteneditor enthalten

Download Unit42 (.zip, 1.3MB)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tennisball

Betreff: Demo

BeitragSo, Jan 22, 2012 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

[edit]
Ich nehme nicht teil.
Habe es dann doch nicht mehr geschafft in der kurzen Zeit. Macht solche kurzen BCCs nie wieder ja!? ;>
[/edit]

ich wollte mal ne Demo in den Raum werfen. Ist nicht fertig, ich wäre für konstruktives Feedback sehr dankbar.
Steuerung: W/A/S/D und Linke Maustaste ( und Escape )
Download
Ja ich bin mir durchaus im Klaren darüber, dass es nur im weit entfernten Sinne ein Würfelspiel ist


mfg,
Tennisball
  • Zuletzt bearbeitet von Tennisball am Mo, Jan 23, 2012 23:08, insgesamt einmal bearbeitet

Addi

BeitragSo, Jan 22, 2012 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Beitrag:
http://dl.dropbox.com/u/480899...ammler.rar

Hoffe er is regelkonform, is mein erstes mal Very Happy
Sry des extrem langen Code wegen, hab erst vorgestern angefangen Very Happy

Addi

Betreff: Update

BeitragMo, Jan 23, 2012 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab meinen Beitrag schnell geupdatet (Code verringert, Titel geändert und 1Bug Raus)
Hoffe, das es noch nicht zu spät ist

http://dl.dropbox.com/u/480899...licker.rar

Holzchopf

Meisterpacker

BeitragMo, Jan 23, 2012 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist noch nicht zu spät - der Wettbewerb endet erst um 23:59 Uhr Wink
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group