 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
04.03.2005, 18:51
|
#1
|
|
TP-Member
Registriert seit: Jan 2004
|
Kosten-Steigerung
Hallo Leute,
Ich bin gerade dabei mein eigenes Browsergame zu scripten!
Ich habe auch schon das grobe fertig! Nur jetzt häng ich fest...
Wie viele andere Browsergames will ich auch, die Kosten der Gebäude steigen lassen...
Das soll so aussehen:
1 Gebäude= 100
2 Gebäude= 110
3 Gebäude= 121
4 Gebäude= 133
5 Gebäude= 146
6 Gebäude= 160
und so weiter, also immer +10%!
Ich weiß nicht wie man das umsetzen soll...
Berücksichtet werden muss:
Der Grundpreis(aus der DB), die neue Anzahl(Formular), die bereits gebauten Gebäude (aus der DB) und halt die 10% oder auch *1,1
Von einem anderen Programmierer habe ich schon erfahren, das das ganze erst mal in eine Schleife gesetzt werden muss, und das man das irgendwie mit "pow" (Potenzfunktion) macht.
Ich weiß nicht wie ich die Formel aufstellen soll...
Ich will jetzt nicht den ganzen Codeschnipsel dafür, wär zwa cool, aber brauch einfach ma eure Ideen wie man das machen sollte...
HELP PLZ!
Der N!tr0 (über Annalena's Nick)
|
|
|
04.03.2005, 19:04
|
#2
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Holst die Anzahl der schon gebauten Gebäude eines Spielers und machst eine Zinses- Zinsrechnung mit 10 Prozent
(Schlag mich jetzt tot, wie das noch mal genau ging, Zinsrechnung ist bei mir far to long her..)
Edit: Hab was gefunden:
Endkosten der Häuser:
Grundkosten*(1+10%/100%)^2
Geändert von Adromir (04.03.2005 um 19:13 Uhr).
|
|
|
04.03.2005, 19:10
|
#3
|
|
TP-Member
Registriert seit: Jan 2004
|
hmm und dann???
<?php
$gebaute_geb = blabla ausser db...
und dann?
$zinsen = $gebaute_geb / 100 * 10 // 10% ^^
?>
und was hab davon? kann jetz irgendwie nich weiter denken?!?!?!
|
|
|
04.03.2005, 19:13
|
#4
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Dann hast du den Endpreis eines Neuen Hauses, wenn der Spieler vorher x Häuser gebaut hat.
|
|
|
04.03.2005, 19:21
|
#5
|
|
TP-Member
Registriert seit: Jan 2004
|
ne hab ich nich....
Angenommen
der Spieler hat 5 Gebäude..
5 / 100 = 0,05 * 10 = 0,5
das is der neue preis? nenene
|
|
|
04.03.2005, 19:29
|
#6
|
|
Guest
Registriert seit: Aug 2002
|
Dreisatz, Grundschule. 
Ich würde dafür einfach eine Funktion schreiben: (nicht optimiert, dafür verständlicher)
PHP-Code:
function endpreis($startpreis, $prozente_erhoehung, $anzahl)
{
// Ausnahme
if ($prozente_erhoehung < 0) return false;
$ein_prozent = $startpreis / 100 * $prozente_erhoehung;
return $ein_prozent * $anzahl + $startpreis;
}
// Für Startpreis 100, Erhöhung um 10% und 5 Häuser (oder was auch immer)
echo endpreis(100, 10, 5);
Optmierte Version:
PHP-Code:
function endpreis($startpreis, $prozente_erhoehung, $anzahl)
{
// Ausnahme
if ($prozente_erhoehung < 0) return false;
return $startpreis + $startpreis * $prozente_erhoehung / 100 * $anzahl;
}
Geändert von Strogij (04.03.2005 um 19:39 Uhr).
Grund: Optimierte Version hinzugefügt
|
|
|
05.03.2005, 02:03
|
#7
|
|
TP-Member
Registriert seit: Jan 2004
|
Hmmm..irgendwie komm ich mit dem Script nicht klar..ich habe noch nie mit einer function gearbeitet..habe jetzt zwar nen bißchen drüber gelesen aber durchgestiegen bin ich noch nicht...
also damit ihr euch mehr vorstellen könnt hab ich euch jetzt mal nen codeschipsel drann gehängt...
PHP-Code:
if (isset($_POST[$row[uid]])) //wenn absenden, dann...
{
if($_POST['anzahl'] >= 1) //überprüfen ob eine positive zahl angegeben wurde
{
if($data[$row[uid]][max] > $buildings2[count]) //überprüfen ob schon gebaut wird
{
$build = mysql_query("SELECT Count(*) as count FROM user_builded where nickname= '".$_SESSION['username']."'");
$build2 = mysql_fetch_array($build);
if($build2[count] == 0) //wenn nicht, dann...
{
$count ="select anzahl_building from user_buildings where nickname = '".$_SESSION['username']."' and name_building = '".$row[name]."'";
$count2 = mysql_query($count);
$count3 = mysql_fetch_array($count2); //bereits fertig gestellte gebäude
$max = $count3[anzahl_building] + $_POST['anzahl'];
if($count3[anzahl_building] < $row[max] && $max <= $row[max]) //überprüfen ob vllt die maximale anzahl überschritten wird
{
$kosten = array();
$cost = explode(";",$data[$row[uid]][cost]); //grundkosten
foreach($cost as $cost)
{
$array = explode(":",$cost);
$source = "select holz, stein from user_ressources where nickname= '".$_SESSION['username']."'";
$source2 = mysql_query($source);
$info = mysql_fetch_array($source2); //resourcen
if($array[0] == holz)
{
$gesamt = $_POST['anzahl'] * $array[1];
$holz = $info[holz] - $gesamt;
if($holz < 0) //holz-kosten
{
array_push($kosten, "mistake");
array_push($kosten, "Holz");
}
}
if($array[0] == stein)
{
$gesamt = $_POST['anzahl'] * $array[1];
$stein = $info[stein] - $gesamt;
if($stein < 0) //stein-kosten
{
array_push($kosten, "mistake");
array_push($kosten, "Stein");
}
}
}
if($kosten[0] == mistake)
{
readfile ("fehler/keine-res.php"); // zu wenig resourcen
}
else
{
readfile ("ok/ok.php"); //sonst bauen
$datum = date('U');
$bauzeit = $datum + $data[$row[uid]][zeit];
$building_add = "INSERT INTO user_builded (
nickname,
name_builded,
zeit,
anzahl_builded,
startzeit,
max,
genre,
uid,
type)
VALUES (
'".$_SESSION['username']."',
'".$data[$row[uid]][name]."',
'$bauzeit',
'".$_POST['anzahl']."',
'$datum',
'".$data[$row[uid]][max]."',
'".$data[$row[uid]][genre]."',
'".$data[$row[uid]][id]."',
'building')";
$building_add2 = mysql_query($building_add); //bauvorgang eintragen
$abzug = array();
$take = explode(";",$data[$row[uid]][cost]);
$source3 = "select holz, stein from user_ressources where nickname = '".$_SESSION['username']."'";
$source4 = mysql_query($source3);
$user = mysql_fetch_array($source4);
foreach($take as $take)
{
$cut = explode(":",$take);
if($cut[0] == holz)
{
$gesamt = $_POST['anzahl'] * $cut[1];
$holz = $user[holz] - $gesamt;
$update = "update user_ressources set holz = '$holz' where nickname= '".$_SESSION['username']."'";
$update_add = mysql_query($update);
}
if($cut[0] == stein) //resourcen updaten
{
$gesamt = $_POST['anzahl'] * $cut[1];
$stein = $user[stein] - $gesamt;
$update = "update user_ressources set stein = '$stein' where nickname = '".$_SESSION['username']."'";
$update_add = mysql_query($update);
}
}
}
}
else
{
readfile ("fehler/max-1.php"); //fehler
}
}
else
{
readfile ("fehler/zz-bauen.php"); //fehler
}
}
else
{
readfile ("fehler/max-1.php"); //fehler
}
}
else
{
readfile ("fehler/formular-falsch.php"); //fehler
}
}
ich hoffe ihr könnt mir helfen...
das muss unbedingt laufen, weil so das spiel verfuscht wird...da der user viel zu viele resourcen hat...
gruß, N!tr02k5
|
|
|
05.03.2005, 02:18
|
#8
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Du hast es doch am Anfang schon richtig gesagt:
1. Haus 100
2. Haus 100*1,1
3. Haus 100*1,1*1,1
4. Haus 100*1,1*1,1*1,1
also Haus=100*1,1^AnzahlHäuser
in PHP ist die Formel dann so umzusetzen
$neuerpreis=100*pow(1.1,$hausanzahl);
Geändert von steffenk (05.03.2005 um 02:28 Uhr).
|
|
|
05.03.2005, 02:52
|
#9
|
|
TP-Member
Registriert seit: Jan 2004
|
*lach*^^
bestimmt jetzt 30 minuten nach dem "^" gesucht was das für ein rechenzeichen das ist und nix gefunden und wollte jetzt fragen...
da seh ich das das pow ist...
okay...jetzt frag ich mich nur noch wie sich php verhält..also der user baut meinetwegen 10 neue häuser
wir dann auch sofort das ganze 10 mal ausgerechnet und kommen auch nach den 1ten haus was gebaut werden soll +10%??
fragen über fragen^^
@St@eff.en: stöber gerade den mysqldumper duch^^
@all wenn ich/wir hier die lösung dafür finden und das funzt, dann spende ich erstmal was!
N!tr0
|
|
|
05.03.2005, 11:32
|
#10
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
die Formel funktioniert genau so, Du kannst das gerne am Taschenrechner prüfen.
Beim 1.Haus ist AnzahlHäuser 0 => 1,1^0=1; also Kosten 100
Hat man 4 Häuser, kostet das 5.Haus 100*1,1^4=146,41
Wenn Du nur glatte Zahlen willst, musst Du das imt round runden.
|
|
|
05.03.2005, 13:01
|
#11
|
|
TP-Member
Registriert seit: Jan 2004
|
ja das ist alles soweit klar...
aber der wenn der benutzer 10 häuser bauen will...
dann is die formel aber noch nicht richtig..mit der formel rechnet man nur das letzte gebäude aus, oder irre ich mich?
das muss dann doch noch in eine schleife und so oft wiederholt werden wieviele er baut..und das ganze addiert ergibt dann den preis für 10 häuser...
also ne while schleife...die so oft durchlaufen lassen, wieviele der user baut, also bei 10 10mal...
und dann soll der die gesamte anzahl um 1 erhöhen, sodass er dann bei dem 2ten durchgang das 2te haus ausrechnet...
ODER???
|
|
|
05.03.2005, 13:33
|
#12
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
achso meinst Du das 
Wenn Du pro Kaufaktion rechnest, brauchst Du dafür eine weiter Variabel.
Aber das versteh ich nicht - dann gehts also um die Anzahl der Kaufaktionen und nicht um die Anzahl der Häuser.
Dann müssten auch 10 Häuser alle gleichviel kosten, da es in einer Aktion geschieht.
Da musst Du die Regel erst mal klar definieren, dann kann man auch die passende Formel entwerfen 
|
|
|
05.03.2005, 13:58
|
#13
|
|
TP-Member
Registriert seit: Jan 2004
|
ALSO:::
der Spieler hat dann das Formular vor sich und gibt ein wieviele Gebäude er davon errichten will...er kann soviele bauen, bis er keine resourcen hat..
bleiben wir mal bei dem beispiel wenn er dann 10 häuser baut.
erstmal werden dann die häuser die er schon vorher gebaut hat geholt....weil diese auf jeden fall in dem pow-befehl vorkommen müssen
dann soll er halt ausrechnen wie viel das erste von seinen 10, die er bauen will, das geschieht ja mit dem pow befehl, also:
PHP-Code:
$hausanzahl = $bereits_gebaute_häuser + 1;
$haus = 100 * pow | | |