PDA

Volledige versie bekijken : loterij


zezioen
%Europe/Berlin %678 %2007, 16:17
hoi ff's

ik ben een kleine loterij voor mijn game aan het maken maar het wilt niet lukken [V]
ik weet 100% zeker dat het in het as zit maar niet hoe ik het kan verwijderen
zins flash player 9 er is werk er ook geen inlogsysteem meer bij met maar die soort code gebruik ik in de loterij
om het random nummer te krijg gebruik ik dit script
Math.round(Math.random()*1000);
die werkt prima maar mischien kan hij het andere script belemeren
het andere script is voor 20 loten
de chek werkt nu maar het lot kopen niet
//start//
geld.text = "25000";
stat.text = "je moet een lot kopen voor je kan spelen";
lot1.text = "leeg";
lot2.text = "leeg";
lot3.text = "leeg";
lot4.text = "leeg";
lot5.text = "leeg";
lot6.text = "leeg";
lot7.text = "leeg";
lot8.text = "leeg";
lot9.text = "leeg";
lot10.text = "leeg";
lot11.text = "leeg";
lot12.text = "leeg";
lot13.text = "leeg";
lot14.text = "leeg";
lot15.text = "leeg";
lot16.text = "leeg";
lot17.text = "leeg";
lot18.text = "leeg";
lot19.text = "leeg";
lot20.text = "leeg";
spin.onRelease = function() {
if (lot1.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot2.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot3.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot4.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot5.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot6.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot7.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot8.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot9.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot10.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot11.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot12.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot13.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot14.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot15.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot16.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot17.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot18.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot19.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else if (lot20.text = "leeg") {
stat.text = "je kan niet kijken of je prijs hebt want je hebt geen lot koop er 1 voor 1000";
win.text = "";
}else {
win.text = Math.round(Math.random()*1000);
}
}
koop.onRelease = function() {
if (lot1.text = "leeg") {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot2.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot3.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot4.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot5.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot6.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot7.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot8.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot9.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot10.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot11.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot12.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot13.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot14.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot15.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot16.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot17.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot18.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot19.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else if (lot20.text = leeg) {
lot1.text = Math.round(Math.random()*1000);
geld.text = -1000;
}else {
stat.text = "je kan geen lot kopen omdat je er al 20 hebt";
}
}
ik wou het volledig met actionscript doen en verder in de movie alleen de layout en de text velden
ik weet ook dat het een te groot script is maar niet hoe ik het kan verhelpen
de namen van de textvelden zijn allemaal instantie namen
kan iemand mijn helpen A.U.B.

Mr. Black
%Europe/Berlin %692 %2007, 16:36
denk eraan: = voor toewijzen en == voor vergelijken.

dus :
if (lot1.text == "leeg") {
}

en soms staat er ook leeg, ipv "leeg". zorgvuldig zijn!

btw; waarom gebruik je geen for-lus? veel handiger lijkt mij :D

zezioen
%Europe/Berlin %694 %2007, 16:40
btw; waarom gebruik je geen for-lus? veel handiger lijkt mij :D
wat is dat? en ik ga kijken of == het wel doet dan edit ik deze

--EDIT--

nee hij blijft het zelfde doen (niet mee werken dus)

Mr. Black
%Europe/Berlin %705 %2007, 16:56
zowiezo staan er nog een paar andere dingen in die fout zijn, zoals

geld = -1000;

je bedoelt natuurlijk geld -= 1000;
ook met al die else ifs: weet je eigenlijk wel wat die doen? er kan er dus maar één gekozen worden uit die serie van 20.
dus: als er één van die 20 leeg is, krijg je te zien 'je kan niet kijken want...'.
wil je dat wel?

post anders je .fla effe, kunnen we zien wat je echt wil, en waar de fout(en) zit(ten).

zezioen
%Europe/Berlin %708 %2007, 16:59
oke dan stop ik de fla erbij

http://www.allan-hollenberg.nl/lotto.fla

--edit--

die url ^^^^^^^^^^ is offline

Mr. Black
%Europe/Berlin %762 %2007, 18:18
zo. even eerst een basislesje lotto: je koopt een aantal loten (0-20). er wordt één specifiek lot getrokken (0-20). als je in het bezit bent van dat lot, mag je een variabele prijs (Math.round(Math.random()*1000)) in bezit nemen. die prijs wordt bij je geld op geteld. alle loten die je nog over hebt, worden nietig verklaard. je kan weer nieuwe loten kopen, wat 100 euro per stuk kost.
dus: hoe meer loten, deste meer geld, deste meer kans
dus: hoe minder loten, deste minder geld, deste minder kans; maar ALS je wint is je prijs even groot.

met dit in het achterhoofd ga je in het begin een aantal variabelen toewijzen;

var money:Number = 25000;//de beginprijs
var noOfLots:Number = 20;//aantal loten
var prijs:Number = 100;//prijs per lot

vervolgens ga je een paar variabelen dynamisch maken:

for (var i:Number = 1; i<=20; i++) {
this["lot"+i].text = "leeg";//zet "leeg" in elk vakje
this["gekocht"+i] = false;//geeft aan of een lot gekocht is of niet; verder voor de gebruiker niet te zien
}

het principe van de for-lus: for (een getal, de voorwaarde waaraan dat getal moet doen, wat er moet gebeuren NA alles wat eronder staat). in dit geval maakt hij dus lot1 en gekocht1 aan, vervolgens lot2 en gekocht2 aan, etc, tot en met lot20 en gekocht20.

vervolgens de twee buttons; die ik spin_btn en koop_btn heb genoemd.
bij spin moet er eerst een lot worden uitgekozen en daarna moet de prijs worden bepaald. vervolgens word gekeken of de gebruiker lot+winnend getal bezit, door te kijken of gekocht+winnendgetal true is. in het begin zal hij false zijn (zie hierboven). straks laat ik zien dat je hem op true kan zetten door de koop_btn. als je het lot bezit (true dus) komt er een text te staan, wordt er geld bij je totaalbedrag opgeteld, en geld.text wordt als het ware even gerefresht. vervolgens maakt hij met hetzelfde for-loopje in het begin weer even alle loten nietig, en alle waardes zet hij op false. als je het lot niet bezit komt er een tekstje dat je niet hebt gewonnen en worden de variabelen en textvelden weer leeggemaakt:

spin_btn.onRelease = function() {
winningNumber = Math.round(Math.random()*noOfLots);
winningValue = Math.round(Math.random()*1000);
if (_root["gekocht"+winningNumber] == true) {
win.text = "U heeft "+winningValue+" euro gewonnen!";
money += winningValue;
geld.text = money;
for (var i:Number = 1; i<=20; i++) {
_root["lot"+i].text = "leeg";
_root["gekocht"+i] = false;
}
} else {
win.text = "U heeft niets gewonnen. Helaas!";
for (var i:Number = 1; i<=20; i++) {
_root["lot"+i].text = "leeg";
_root["gekocht"+i] = false;
}
}
};

bij koop gaat hij met een for-lus zoeken naar het eerstvolgende lot wat nog niet gekocht is; als lot1 bijvoorbeeld nog false is, maakt hij het nu true, er gaat wat geld af en er komt 'gekocht' in te staan. ook wordt een boolean (een true/false statement) meteen op false gezet; zo weet de pc dat je niet meer verder hoeft te zoeken naar een ander lot. als lot1 wel als op true staat, komt er bij de i een bij, dus i = 2, en kijkt hij bij lot2. etc. ook hier word geld.text even gerefresht:

koop_btn.onRelease = function() {
for (var i:Number = 1; i<=noOfLots; i++) {
if (zoeken == true && _root["gekocht"+i] == false) {
zoeken = false;
_root["lot"+i].text = "gekocht";
_root["gekocht"+i] = true;
}
}
money -= prijs;
geld.text = money;
zoeken = true;
};




ik wou eigenlijk in het begin de .fla er niet bij doen, zodat je dit allemaal moest lezen en begrijpen, maar achteraf vond ik dat een beetje zielig. :D . je kan zelf kiezen; of gewoon domweg de .fla openen of toch ook even te kijken naar de uit(gebreideuit)leg.

veel succes nog met je CASINO ;)

zezioen
%Europe/Berlin %302 %2007, 08:16
hey thnx man alleen ik wou niet dat de loten gekocht zijden maar het nummer dat ze kregen hoe kan je dat dan doen want ik ben nog niet zo ervaren voor dit soort script

--edit--

als ik 20 loten heb kan hij gewoon door gaan met het kopen want het geld blijft na de 20 er toch af gaan

--edit--

als je eigenlijk niet meer genoeg geld hebt voor een lot gaat hij gewoon in de min dat mag ook niet


P.S. het is ool dat hij werkt

Mr. Black
%Europe/Berlin %403 %2007, 10:41
hey thnx man alleen ik wou niet dat de loten gekocht zijden maar het nummer dat ze kregen hoe kan je dat dan doen want ik ben nog niet zo ervaren voor dit soort script

wat bedoel je met 'het nummer dat ze kregen'? nummer 1 t/m 20?

als ik 20 loten heb kan hij gewoon door gaan met het kopen want het geld blijft na de 20 er toch af gaan

in principe gaat alleen het geld er nog af, omdat je met de for-lus ervoor zorgt dat als i groter is dan noOfLots(20 dus), hij niet meer verder zoekt. voor je probleem moet je dus het geld aftrekken ook even in die for-lus zetten:

koop_btn.onRelease = function() {
for (var i:Number = 1; i<=noOfLots; i++) {
if (zoeken == true && _root["gekocht"+i] == false) {
zoeken = false;
_root["lot"+i].text = "gekocht";
_root["gekocht"+i] = true;
money -= prijs;
geld.text = money;
}
}
zoeken = true;
};


als je eigenlijk niet meer genoeg geld hebt voor een lot gaat hij gewoon in de min dat mag ook niet

dan moet je er in het begin nog even een if-statement tegenaan gooien ;) :

koop_btn.onRelease = function() {
if (money>=prijs) {
for (var i:Number = 1; i<=noOfLots; i++) {
if (zoeken == true && _root["gekocht"+i] == false) {
zoeken = false;
_root["lot"+i].text = "gekocht";
_root["gekocht"+i] = true;
money -= prijs;
geld.text = money;
}
}
zoeken = true;
} else {
win.text = "U heeft niet meer genoeg geld.";
}
};

hierboven dus ook nog je tweede probleem erin verwerkt.

succes nog! :D

zezioen
%Europe/Berlin %502 %2007, 13:02
wat bedoel je met 'het nummer dat ze kregen'? nummer 1 t/m 20?

ik bedoel dat je je lot nummer ziet dus bijvoorbeeld 1294, 8509, 8733, 8636
is dat mogelijk dat hij dan ook de zelfde prijs wint als dat het lot nummer is

ik heb de rest in mijn as gezet en het werkt 100% ik moest het geld zelfs van 25000 naar 200 halen om te chekken of hij het wel deed met het kijken voor genoeg geld en dat werkt ook

Mr. Black
%Europe/Berlin %527 %2007, 13:38
oh zo.
ja, dat is mogelijk. je geeft een variabele nu niet meer true of false, maar het lotnummer.
vervolgens kijkt as dmv een for-lus of een van die variabelen matcht met het variabele winnende nummer. let wel even op: de kans om nu te winnen wordt wel heel klein! de pc kan namelijk kiezen tussen nummers 1000-9999. veel kans is er dus niet ;) :

var money:Number = 25000;
var noOfLots:Number = 20;
var prijs:Number = 100;
var zoeken:Boolean = true;
var wins:Boolean = false;
var winningNumber:Number;
var winningValue:Number;
var randomLot:Number;
geld.text = money;
for (var i:Number = 1; i<=20; i++) {
this["lot"+i].text = "leeg";
this["nummer"+i] = 0;
}
spin_btn.onRelease = function() {
winningNumber = 9999-(Math.round(Math.random()*8999));
for (var i:Number = 1; i<=noOfLots; i++) {
if (_root["nummer"+i] == winningNumber) {
wins = true;
}
}
if (wins) {
win.text = "U bezit nummer "+winningNumber;
money += winningNumber;
geld.text = money;
wins = false;
} else {
win.text = "U bezit nummer "+winningNumber+" niet.";
}
for (var i:Number = 1; i<=20; i++) {
_root["lot"+i].text = "leeg";
_root["nummer"+i] = 0;
}
};
koop_btn.onRelease = function() {
randomLot = 9999-(Math.round(Math.random()*8999));
if (money>=prijs) {
for (var i:Number = 1; i<=noOfLots; i++) {
if (zoeken == true && _root["nummer"+i] == 0) {
zoeken = false;
_root["nummer"+i] = randomLot;
_root["lot"+i].text = randomLot;
money -= prijs;
geld.text = money;
}
}
zoeken = true;
} else {
win.text = "U heeft niet meer genoeg geld.";
}
};


khoop dat het script nog altijd duidelijk is.

succes nog! :D

zezioen
%Europe/Berlin %531 %2007, 13:45
ik snap de kleine kans

ik heb me daardoor bedacht je ziet de nummers gewoon dus 4859, 3857, 9673
maar de chek voor winnen weer het oude
hoe doe je dat want ik heb nog nooit een lus en i gebruikt

Mr. Black
%Europe/Berlin %534 %2007, 13:50
ik begrijp je vraag niet helemaal; bedoel je dat hij toch gewoon een nummer (1-20) uitkiest, terwijl je wel een 4-cijferig ziet?

zezioen
%Europe/Berlin %536 %2007, 13:52
ik bedoel de oude versie van het kijken welk lot heeft gewonnen maar dan staat er niet gekocht maar een 4 tallig nummer

leroysnippe
%Europe/Berlin %539 %2007, 13:56
Even tussendoor, Mr. black: respect voor jouw geduld en berijdheid deze persoon te helpen! hulde.

Mr. Black
%Europe/Berlin %539 %2007, 13:57
kom op: een beetje zelf proberen kan toch geen kwaad? bij de koop_btn staat ergens iets van

_root["lot"+i].text = "gekocht";

dat moet je dus veranderen in een random getal, wat je als je op koop_btn drukt genereert. dus in totaal voor de koop_btn:

koop_btn.onRelease = function() {
randomNummer = 9999-(Math.round(Math.random()*8999));
if (money>=prijs) {
for (var i:Number = 1; i<=noOfLots; i++) {
if (zoeken == true && _root["gekocht"+i] == false) {
zoeken = false;
_root["lot"+i].text = randomNummer;
_root["gekocht"+i] = true;
money -= prijs;
geld.text = money;
}
}
zoeken = true;
} else {
win.text = "U heeft niet meer genoeg geld.";
}
};


zo simpel is het dus!

zezioen
%Europe/Berlin %540 %2007, 13:58
Even tussendoor, Mr. black: respect voor jouw geduld en berijdheid deze persoon te helpen! hulde.
ik weet het ik ben ongeduldig en kieskeurig maar als dit werkt ga ik hem zelf aansluiten op mijn game (die ook nog in de bouw is ) en ook op de database (.txt bestand geen sql en dat werkt ook dat weet ik zeker) en natuurlijk de layout veranderen


--edit--


mr. black ik heb het nu (zoals jij zij ) ook een beetje zelf geprobeerd en ik heb het nu en heel erg bedankt je krijgt reputatie