art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 04.03.2005, 18:51   #1
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt

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)
Annalena ist offline   Mit Zitat antworten


Alt 04.03.2005, 19:04   #2
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine User
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).
Adromir ist offline   Mit Zitat antworten
Alt 04.03.2005, 19:10   #3
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt
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?!?!?!
Annalena ist offline   Mit Zitat antworten
Alt 04.03.2005, 19:13   #4
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine User
Dann hast du den Endpreis eines Neuen Hauses, wenn der Spieler vorher x Häuser gebaut hat.
Adromir ist offline   Mit Zitat antworten
Alt 04.03.2005, 19:21   #5
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt
ne hab ich nich....

Angenommen

der Spieler hat 5 Gebäude..

5 / 100 = 0,05 * 10 = 0,5

das is der neue preis? nenene
Annalena ist offline   Mit Zitat antworten
Alt 04.03.2005, 19:29   #6
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
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(100105); 
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
Strogij ist offline   Mit Zitat antworten
Alt 05.03.2005, 02:03   #7
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt
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
Annalena ist offline   Mit Zitat antworten
Alt 05.03.2005, 02:18   #8
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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);
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer

Geändert von steffenk (05.03.2005 um 02:28 Uhr).
steffenk ist offline   Mit Zitat antworten
Alt 05.03.2005, 02:52   #9
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt
*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
Annalena ist offline   Mit Zitat antworten
Alt 05.03.2005, 11:32   #10
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 05.03.2005, 13:01   #11
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt
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???
Annalena ist offline   Mit Zitat antworten
Alt 05.03.2005, 13:33   #12
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 05.03.2005, 13:58   #13
TP-Member
 
Registriert seit: Jan 2004
Annalena macht alles soweit korrekt
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</