Lotto Mogul

Kommentare anzeigen Worklog abonnieren

Worklogs Lotto Mogul

Das schlimmste ist...

Donnerstag, 8. Januar 2009 von Valnar
... nicht wenn das Bier alle ist (Ok, unteranderem auch Very Happy)
Aber vor allem, wenn ein Projekt an der Mathematik zu scheitern droht!

Ich hab folgenden Code (aus technischen Gründen, es kommt einfach mit größeren Zahlen zurecht!) in PureBasic geschrieben. Diese wird als DLL in das Spiel geladen und führt ein großteil der Berechnungen aus.

Leider sind die Berechnungen (meines Erachtens nach) etwas unrealistisch Sad )

Eventuell könnte mir ja jemand von euch mir ein Lösungsansatz oder eine gesamte Lösung nennen.

Code: [AUSKLAPPEN]

ProcedureDLL.q GetWinners(x,y,sell) ;x = Welcher Tipp (ZB 6) y= wieviele Zahlen (ZB 49) sell = Wieviele Lose wurden Verkauft.
  numbers.q = XausY(x,y) ;Gibt die Anzahl der Möglichkeiten aus. Bei 6 aus 49 sind dies maximal 13983816
  winners = 0
  faktor = 0
 
  If numbers = 0
    ProcedureReturn NULL
  EndIf

  ;Hiermit "Fake" ich einen durchlauf jeden Verkauften Loses
  Select sell
    Case 0 To 1000
      faktor = 1
    Case 1000 To 10000
      faktor = 1000
    Case 10000 To 100000
      faktor = 10000
    Case 100000 To 1000000
      faktor = 100000
    Default
      faktor = 1000000
  EndSelect
 
  For i=0 To sell/faktor Step 1
     zahl.q = Rand(1,numbers)
    
      If zahl < faktor
         winners = winners + faktor/zahl
      EndIf
   Next
   
   ProcedureReturn winners
EndProcedure


Debug "Start"
RandomSeed(ElapsedMilliseconds())
ig.q= 0
lose.q= 200000000 ;200 Millionen verkaufte Lose
i= GetWinners(1,49,lose)
ig = ig+i
Debug "1 aus 49 "+Str(i)
i= GetWinners(2,49,lose-ig)
ig = ig+i
Debug "2 aus 49 "+Str(i)
i= GetWinners(3,49,lose-ig)
ig = ig+i
Debug "3 aus 49 "+Str(i)
i= GetWinners(4,49,lose-ig)
ig = ig+i
Debug "4 aus 49 "+Str(i)
i= GetWinners(5,49,lose-ig)
ig = ig+i
Debug "5 aus 49 "+Str(i)
i= GetWinners(6,49,lose-ig)
ig = ig+i
Debug "6 aus 49 "+Str(i)
Debug ""
xuv.d = (ig/lose)*100
Debug xuv
Debug "ende"


Ausgabe dabei:
Zitat:
Start
1 aus 49 20711043
2 aus 49 2901708
3 aus 49 51971
4 aus 49 11715
5 aus 49 685
6 aus 49 161

11.8386415
ende


Jeder wird sehen, dass dies nur minder Realistisch ist.

Man mag mir auch die sporadische Kommentierung verzeihen, ich weiss teilweise nicht wie ich es Beschreiben soll.


Also. Hilfe ist gefordert Very Happy

Naja, sonst gibt es nicht viel neues...
Zumindets fällt mir nichts ein.

Bis denne dann.

Immer ärger mit Major Pain...

Mittwoch, 26. November 2008 von Valnar
Rolling Eyes

Rolling Eyes

Rolling Eyes

Naja was bessere als Rolling Eyes um meine Situation auszudrücken gibt es nicht Very Happy

Ich hab Probleme mit der Möglichkeiten-Berechnungen für die Auswertung des Lottozahlen:
Es gibt keine mir (oder anderen, die bereit sind mir zuhelfen) bekannte Programmiersprache, die mit Zahlen, welche bis zu 65-Stellen betragen, rechnen kann UND in BB benutzt werden kann (als DLL zb., naja anders geht es wohl nicht Very Happy)

Ich habe mir schon eine DLL in PureBasic geschrieben:
Code: [AUSKLAPPEN]
Declare.q fakul(fak_wert)

ProcedureDLL xausy(x.l, y.l)
  ProcedureReturn ((fakul(y) / (fakul(x)) * fakul(y-x)))
EndProcedure

Procedure.q fakul(fak_wert)
  fak.q = 1
  For fak_count.l = 1 To fak_wert Step 1
    fak = fak*fak_count
  Next
  ProcedureReturn fak
EndProcedure


Den Code hab ich aus einem PHP-Code, welcher ein Bekannter, als Beispiel für Fakultätberechnungen, für mich angelegt hat.
Code: [AUSKLAPPEN]
<?php

function fakultaet($fak_wert) {
   $fak = 1;
   for($fak_count = 1; $fak_count <= $fak_wert; $fak_count++) {
      $fak = $fak * $fak_count;
   }
   return $fak;
}

function xAusY($x , $y) {
   return fakultaet($y) / ( fakultaet($x) * fakultaet($y - $x) );
}

echo xAusY(6 , 49);
echo "<br />Die Wahrscheinlichkeit x aus y zu treffen ist ", 1 / xAusY(6,49);
?>


Naja.
Nun bleiben mir in der Hinsicht nur ein paar wenige möglichkeiten:
1. Jemand ist so nett und Schreibt mir eine DLL die ich später nur einfügen brauch oder gibt ein Assembler-Code (kp ob der mit so großen Zahlen rechnen kann) der die O.G. Berechnung berechnet, sodass ich ihn in PureBasic per Inline-ASM zu einer DLL zusammen basteln kann.
Vorteil daran währe, dass dies einfach im päteren Code einzufügen währe und wohl auch sehr schnell bliebe.

2. Ich mache alles hardcoded per DIM. Das hätte den nachteil das es sehr langsam, Speicherplatzschluckend und auch sehr steif ist. Vorteil ist, das man später einfach nur MEINEDIM(6,49) schreiben bräuchte.

3. Ich mache ein Online-Spiel draus und lasse alles von PHP berechnen (Das anscheinend mit unendlich großen Zahlen rechnen kann)

4. Ich gebe auf und trage das Projekt zu grabe.



Ok. 3 und 4 sind SOWAS von unwahrscheinlich Very Happy
Eventuell kann mir einer von euch ja helfen.

Ich versuche mich auf jedenfall mal an Punkt 2.
Dafür muss ich in PHP alle Möglichkeiten für jede Zahl ausrechnen lassen (Ich denke das man maximal 10 aus 100 nehmen kann, eventuell leicht mehr.)


Sodele das war es. Bis zum nächsten mal... Wink

I Shot the Screen... *träller*

Donnerstag, 23. Oktober 2008 von Valnar
...but I did not shoot the ... Oh da seid ihr ja!

SO, wie versprochen liefere ich nun einige Screenshots ab.
Ich hab euch gewarnt, für Augenschäden wird nicht gehaftet Twisted Evil

Hier sieht man, wie das Menü zum Anlegen eines neuen Spielers aussieht.
Im hintergrund das restliche Hauptmenü. Sehr schlicht und langweilig, ich weiss. Später kommt noch was dazu.
user posted image


Hier habe ich schon alle Notwendigen Daten eingetragen. Man beachte die Hintergrundfarbe des Logos, welche man frei wählen kann.
Neue Schwierigkeitsstufen kann man ganz einfach eintragen.
user posted image


Auf diesem Bild sieht man das Spiel-Hauptmenü. Die Schwarzen Rechtecke werden später NICHT zu sehen sein. Sie dienen mommentan für mich als ausrichtungen für Klick-Events. Und damit ihr meine hässliche Stadt nicht ertragen müsst Very Happy
Man beachte auch oben rechts die Siedebar, welche man ein und ausfahren kann. Dort kommt später noch der ein oder andere Button hin.
user posted image

Mehr gibt es im momment (Offiziell) noch nicht Wink

Sodele, man schriebt sich beim nächsten Eintrag.

Edit: So nebenbei: Bei EPS auf seinen Rechner läuft das Spiel so schnell, dass er immer Delay einbauen muss. Nicht nur Delay 1, sondern direkt Delay 10 Very Happy

Geknüppelkonzert... oder so

Mittwoch, 22. Oktober 2008 von Valnar
So, ich hätt nich gedacht das ich mal mich dazu bewege hier wieder was zu schreiben.

Eigentlich habe ich den Worklog getartet um mich für das Programmieren zu motivieren.
Klappt auch.
Nur für das Worklog-Eintrag-Schreiben fehlt mir die Motivation... *Ein Teufelskreis*

Ich war in der zweit vom letzten Eintrag bis jetzt nicht untätig.

Es steht nun ALLES was man zum anlegen einer neuen Firma/Eines neuen Spieler braucht.

Am Schwersten war die Ladefunktion für die Firmenlogos (und auch andere Bilder Very Happy).
Diese funktioniert zum glück aber jetzt.
Mommentan werden Bilder dafür aus dem mitgelieferten Ordner kommen, später soll noch im Dokumente und Einstellungen-Ordner ein Ordner kommen.
In der Funktion zum Laden der Bilder kann man eine mindest- und eine maximalgröße angeben Wink

Ich habe eine Funktion geschrieben die die Logos überarbeitet, da ich festgestellt habe, dass es einige Probleme gab (und ich wollte etwas besonderes haben Wink)
Sie unterstützt Transparente Farben, und als Hintergrund kann eine eigene Farbe gewählt werden!

Bilder gibt es eventuell Später, als nächstes nehme ich das Spiele-Hauptmenü in angriff.
Und wenn ich darauf keine Lust habe, ich progge nebenbei ein kleinen Editor für die EscapeGUI-Wordwrap-Funktion, da ich gemerkt habe, dass es zeitraubend ist diese sachen im spiel driekt zu testen.

Apropo escapeGUI - diese hab ich auch um einiges dem Spiel angepasst. Die Textdatei der Spielspezifischen änderungen (Sprich der änderungen die nur für das spiel und nicht als verbesserung für escapeGUI allgemein sind) beträgt schon 17 zeilen - 1 Zeile = 1 Block an Änderungen (Ich schreibe einfach die Von-Bis-Zeile daran, wenn code ersetzt wird in diesen zeilen commentiere ich die normalerweise aus)
Und insgesamt sind in diesen 17 Zeilen ca. 78 Zeilen Code vermerkt Very Happy

Nebenbei: Ich suche IMMERNOCH Grafiker und so Wink

Edit: Und bevor ich es vergesse: Sound ist ja auch dazu gekommen.
Mommentan 1 Sound für alle 3 Maustasten (ich könnte sogar jeder ihren eigenen zuweisen durch 1 zeilenänderung pro taste, gut durchdacht, wa), Sound beim Minimieren und Maximieren eines Fensters.
Und ein Errorsound, den ich am liebsten habe, da er einfach viel zu Typisch, aber irgendwie anders ist Very Happy
Eine Background-Music-Loop ist auch drinnen, eine sehr schöne sogar Very Happy

Alle Sounds hab ich von Soundsnap.com geklaut ääh genommen. Wink

Edit2: Naja Bilder kommen mit dem nächsten eintrag - und der Kommt schneller als der Letzte (also dieser hier Wink) Very Happy
Nachdem ich einen Bug gefunden habe der meiner meinung nach nicht existieren dürfte und mir es nicht gewillt ist diesen zu beheben werde ich es später versuchen.

N8 an alle *uhrzeit schiel*
Oder halt "Good Morning, BBP!"

Bis denne

Erster Eintrag im Worklog der Lotto Mogul... ääh..

Mittwoch, 10. September 2008 von Valnar
Hallo Leute,

ich möchte euch heut mein Aktuelles Projekt vorstellen:

Lotto Mogul (Logo ->kommt irgendwann nomma Very Happy)


In dem Spiel geht es darum eine Lottogesellschaft zu gründen und möglichst erfolgreich zu führen.

Features:
* Mehr oder minder realistische Lottogewinner
* Werbung
* Verträge mit Kioskketten aushandeln (Die die Lose verkaufen)
* Eigene Losbuden
* Schwierigkeitsstufe wählbar
* Spielzeit Wählbar
* Frameunabhängig dank Runden

Was eventuell kommt:
* Verschiedene Lottosysteme (6aus49 +Zusatzzahl, Oddset etc. pp.)
* KI (Falls sich später jemand erbarmt diese zu Programmieren)
* Multiplayer (Wenn sich Singleplayer durchsetzt...)


Programmieren werd ich dies mit Blitz3D (aber alles in 2D Razz) und der fabulösen escapeGUI von eps (http://www.east-power-soft.de/)


Was das Spiel bis jetzt kann:

Nicht viel, es kann mommentan eigentlich noch nichts, ausser ein paar GUI-Dinger erstellen.
Ich habe die letzten Tagen damit verbracht den Code etwas aufzuräumen und eine Funktion zu schreiben, die dynamisch Bilder aus Verzeichnissen ausliest.

Dadurch will ich den User die Möglichkeit geben, eigene Bilder wie zb. Firmenlogo zu benutzen.

Die Funktion testet darauf ob die Datei eine richtige Endung hat, prüft ob die Bild nicht defekt ist und liest aus, wie Breit und Hoch das Bild ist. Auch kann man eine maximale Höhe definieren.

Die Funktion hat größenteils EPS geschrieben, da ich zu blöd dafür bin Embarassed Very Happy



Nun werd ich die Tage noch alles richtig einbauen und dann müsste man ein neues Spiel erstellen können Very Happy
Dann meld ich mich auch wieder, evtl mit Bildern und ohne Demo Wink



Wer interesse hat zu helfen: Ich suche noch Leute für Grafik, Programmierung und Sounds!

Bei Fragen, Anregungen und Ideen -> PM