Anzeige

Count funktion

Count funktion | PSD-Tutorials.de

Erstellt von rey, 12.09.2008.

  1. rey

    rey Der Frager ;)

    Dabei seit:
    26.06.2006
    Beiträge:
    836
    Geschlecht:
    männlich
    Software:
    3Ds Max, Maya
    Kameratyp:
    Canon 50D
    Count funktion
    hi,
    ich möchte für eine spiel wiederholung eine Macro und Micro berechnen der rechnweg für micro lautet
    alle aktionen die Minute wo den Namen Select; Move; attack uvm. haben zählen und dann geteilt die Spiellänge.
    fürs Macro genauso nur das es dort die aktionen zählt die den namen build; train uvm haben
    ich hatte es so versucht
    allerdings bekomme ich eine fehlermeldung.
    der code
    PHP:
    1.  
    2. $ac = php_bw_get_actions("C:\\xampp\\htdocs\\Repasm\\0397_PZPPTPPPchin-l_llBlAl.rep", "Rey-619", REPASM_ALL_ACTIONS, 10);
    3.  
    4. $zeit = date("i:s",$ac->Time);
    5. $action = $ac->Name;
    6.  
    7.  
    8.  $zaehler = 0;
    9.    $replay_aktion = array();
    10. foreach($ac->Actions as $actions)
    11. {
    12. $zaehler++;
    13. $acts="";
    14. foreach($actions as $aktionen)
    15. {
    16. $zeitpunkt = date("i:s", $aktionen->Time);
    17. $acts=$zeitpunkt." REY MACHTE ZUDERZEIT ::".$aktionen->Name ."<br />";
    18. echo $acts;
    19. //macro berechnen
    20. $macro = count($aktionen->Name Where $aktionen-Name=="train"|| $aktionen=="build")
    21. $gesamtzeit = date("i:s", $info->GameLength);
    22. $macro2 = $macro/$gesamtzeit;
    23. echo "das Macro beträgt:: ".$macro2;
    24. }
    25. }
    irgendwelche vorschläge oder ist dies gar nicht umsetzbar?
     
    #1      
  2. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    Count funktion
    AW: Count funktion

    Keine Ahnung was du mit der Frage ausdrücken willst, außerdem wird bei der Fehlermeldung sicher ne Zeilenangabe geliefert, wäre schön die zu haben.

    Edit: zumindest die Zeile "$macro = count($aktionen->Name Where $aktionen-Name=="train"|| $aktionen=="build")" ist grober Unfug. PHP::count hat nichts mit SQL-COUNT zu tun.
     
    Zuletzt bearbeitet: 12.09.2008
    #2      
  3. rey

    rey Der Frager ;)

    Dabei seit:
    26.06.2006
    Beiträge:
    836
    Geschlecht:
    männlich
    Software:
    3Ds Max, Maya
    Kameratyp:
    Canon 50D
    Count funktion
    AW: Count funktion

    nunja dann versuche ich es mal ausdrücklicher zu erläutern.
    wenn ich mir die funktion ausgeben lasse also echo $acts
    dann gibt er mir das aus
    so sollte bei count raus kommen 4 da train 4 mal vorkommt und es kein build gibt wäre dan beispielsweise noch bei einem zeitpunkt build dabei müsste ergebnis 5 sein
    ich hoffe nun ist es klarer was ich versuche zu machen


    und ja der fehler bezieht sich auf die zeile mit count.....
    das es nicht mit der mysql count funktion zu tun hat ist mir bewusst ich hab es einfach mal versucht ;)
    PHP:
    1. if($aktionen->Name="train"){
    2.  $train=count ($aktionen->Name);
    3. echo "<br />Rechnung :" .$train;
    4. }else {
    5. echo "<br /> Es wurde nicht einmal Train ausgegeben.";
    6. }
    7.  
    8.  
    9. //macro berechnen
    10. /*$macro = count($aktionen->Name Where $aktionen-Name=="train"|| $aktionen=="build")
    11. $gesamtzeit = date("i:s", $info->GameLength);
    12. $macro2 = $macro/$gesamtzeit;
    13. echo "das Macro beträgt:: ".$macro2;*/
    14. }
    15. }
    ich habe es nun mit der if schleife versucht aber da kommt das neben jeder zeile Rechnung 1 egal ob train steht oder was anderes
     
    Zuletzt bearbeitet: 12.09.2008
    #3      
  4. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    Count funktion
    #4      
  5. rey

    rey Der Frager ;)

    Dabei seit:
    26.06.2006
    Beiträge:
    836
    Geschlecht:
    männlich
    Software:
    3Ds Max, Maya
    Kameratyp:
    Canon 50D
    Count funktion
    AW: Count funktion

    hm.. ne habs mit versucht aber das ist ja eh ein bissel was anderes als das was ich versuche.
    bei ihm ist die array anordnung usw. schon festgelegt.
    bei mir zwar auch aber etwas dynamischer
    ich habs mit versucht allerdings etwas anderst nun bekomme ich aller dings die fehlermeldung
    das script schaut nun so aus
    PHP:
    1.  
    2. $action = php_bw_get_actions("C:\\xampp\\htdocs\\Repasm\\0397_PZPPTPPPchin-l_llBlAl.rep", "Rey-619", REPASM_ALL_ACTIONS, 10);
    3.  
    4. foreach($action as $Act)
    5. {
    6.  
    7. zeile 331     foreach($Act as $Aktionen){
    8. $array = array($Aktionen->Name);
    9. zeile 333    foreach( array_count_values( $array ) as $key=>$keyCount ){
    10.     $strTable .= '  <tr>'.PHP_EOL;
    11.     $strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
    12.     $strTable .= '  </tr>'.PHP_EOL;
    13. }
    14. print($strTable);
    15.  
    16. }
    17.  
    18. }
    19.  
    den fehler habe ich nun behoben aber er zählt eben alles mit 1mal anstatt eben die sachen zu addieren
    PHP:
    1.  
    2. foreach($action->Actions as $Act)
    3. {
    4.  
    5. foreach($Act as $Aktionen){
    6.  
    7. $array = array($Aktionen->Name);
    8.  
    9.  
    10. foreach( array_count_values( $array ) as $key=>$keyCount ){
    11.     $strTable .= '  <tr>'.PHP_EOL;
    12.     $strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
    13.     $strTable .= '  </tr>'.PHP_EOL;
    14. }  
    15. if ($key!="Select" && $key!="Hotkey" && $key!="Attack" && $key!="Set Rally" && $key!="Set" && $key!="Clear Rally" && $key!="Clear" && $key != "Stim" && $key!="Lift" && $key!="Move" && $key!="Burrow" && $key!="Unurrow" && $key!="Hold Position" && $key!="Hold" && $key!="Unload" && $key!="Unload All" && $key!="All" && $key="Siege" && $key!="Unsiege" && $key!="Cloack" && $key!="Decloack" && $key!="Shift Select" && $key!="Shift" && $key!="Deselect" && $key!="Return Cargo" && $key="Return" && $key!="Cargo" && $key!="Arm" && $key!="Comsat Scan" && $key!="Scan" && $key!="Comsat" && $key!="Lay Mine" && $key!="Lay" && $key!="Mine" && $key!="All spells" && $key!="spells") {
    16.     $train = count($key);
    17.  
    18.     }
    19.  
    20.  
    21. }
    22.  
    23.  
    24. echo "Jetzt kommen die Aktionen:<br /><pre>";
    25. var_dump($strTable);
    26. echo "</pre>";  
    27.  
    28. echo"trainingsgesamt".$train;
    29.  
    30.  
    31.  
    deshalb habe ich es nochmal mit if versucht aber das haut auch net hin er zählt mir nicht wie oft es train gab wenn es vorgekommen ist
     
    Zuletzt bearbeitet: 12.09.2008
    #5      
  6. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    Count funktion
    AW: Count funktion

    Stimmt bei dir ist die Zeit mit drin, deswegen hast du jeden Wert einmal...

    Ähm wie wärs mit ner einfachen Schleife:
    Für jeden Wert im Array {
    if(stristr(Wert, train) {
    $count ++;
    }
    if(stristr(Wert, wasauchimmer) {
    $count ++;
    }
    }

    ?! Mal so ins unreine gesprochen...
     
    #6      
  7. rey

    rey Der Frager ;)

    Dabei seit:
    26.06.2006
    Beiträge:
    836
    Geschlecht:
    männlich
    Software:
    3Ds Max, Maya
    Kameratyp:
    Canon 50D
    Count funktion
    AW: Count funktion

    uhm hä....
    stehe gerade auf der leitung wie soll das mit für jeden wert im array gehen???

    uhm das würde dann inen auch mit einer if gehen oder irre ich mich da

    also
    zeile 343 if(array_search($Aktionen->Name!="Select" && $Aktionen->Name!="Hotkey"...
    $count ++;
    }
    } meinst so?

    wenn ja dann geht dies auch nicht es heißt


    Warning: Wrong parameter count for array_search() in C:\xampp\htdocs\Repasm\details2.php on line 343

    nunja was ich auch noch nicht beachtet habe das es jeweils de aktionen pro minute berechnen soll dann das gesamte / die dauer
    ich hatte das script nun so gehalten leider falsches ergebnis
    PHP:
    1. $action = php_bw_get_actions("C:\\xampp\\htdocs\\Repasm\\0397_PZPPTPPPchin-l_llBlAl.rep", "Rey-619", REPASM_ALL_ACTIONS, 10);
    2.  
    3.  
    4.  
    5.    
    6. foreach($action->Actions as $Act)
    7. {
    8.  
    9. foreach($Act as $Aktionen){
    10.  
    11.  
    12. $array = array($Aktionen->Name);
    13.  
    14. foreach( array_count_values( $array ) as $key=>$keyCount ){
    15.  
    16.     $strTable .= '  <tr>'.PHP_EOL;
    17.     $strTable .= '    <td>'.$key.'</td>'.PHP_EOL;
    18.  
    19.     $strTable .= '  </tr>'.PHP_EOL;
    20.  
    21. if(stristr($key, "Train")) {
    22. $countTrain ++;
    23. }
    24. if(stristr($key, "Cancel Train")) {
    25. $countCancelTrain ++;
    26. }
    27. if(stristr($key, "Hatch")) {
    28. $countHatch ++;
    29. }
    30. if(stristr($key, "Merge Archon")) {
    31. $countMergeArchon ++;
    32. }
    33. if(stristr($key, "Merge Dark Archon ")) {
    34. $countMergeDarkArchon ++;
    35. }
    36. if(stristr($key, "Research")) {
    37. $countResearch ++;
    38. }
    39. if(stristr($key, "Upgrade")) {
    40. $countUpgrade ++;
    41. }
    42. if(stristr($key, "Select Building")) {
    43. $countSelectBuilding ++;
    44. }
    45. if(stristr($key, "HotkeyBuilding")) {
    46. $countHotkeyBuilding ++;
    47. }
    48. if(stristr($key, "Build")) {
    49. $countBuild ++;
    50. }
    51. if(stristr($key, "Morph")) {
    52. $countMorph ++;
    53. }
    54. if(stristr($key, "Warp")) {
    55. $countWarp ++;
    56. }
    57. if(stristr($key, "Evolve")) {
    58. $countEvolve ++;
    59. }
    60.  
    61. }  
    62.  
    63.  
    64. }  
    65.  
    66.  
    67.  
    68. }
    69.  
    70.  
    71. echo "Jetzt kommen die Aktionen:<br /><pre>";
    72. var_dump($action);
    73. echo "</pre>";  
    74. $MacroAktionengesamt=$countTrain+$countCancelTrain+$countHatch+$countMergeArchon+$countMergeDarkArchon+$countResearch+$countUpgrade+$countSelectBuilding+$countHotkeyBuilding+$countBuild+$countMorph+$countWarp+$countEvolve;
    75. $MacroAktionengesamtausgabe= (($MacroAktionengesamt*60)/3600)/$Dauer;
    76. echo"trainingsgesamt".$MacroAktionengesamtausgabe;
     
    Zuletzt bearbeitet: 12.09.2008
    #7      
x
×
×
teststefan