Help with sorting highscore

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
mofle
Forum Newbie
Posts: 6
Joined: Fri Apr 06, 2007 10:02 pm

Help with sorting highscore

Post by mofle »

Hi all you beautiful people

I'm making a Flashgame with a php highscore.
In my game I have a timer and I want the highscore to show me the lowest time.
But the code is created to show the best score.
I think I have to do something with the "rsort" or something.

Can anybody help me with this?

It works as it is, but the highest time is sortet to the top not the bottom.

If you help me I will include your name in the credits of the game.

http://www.mofle.net/moflegame2/

Start the game and click on the button named "Highscore" to test the Highscore.

The game is far from be finished...

Code: Select all

<?php

	$winscore = (int)$winscore;

	// Create a Blank File if it doesn't already exist
	if (!file_exists($filename))
	{
		$file=fopen($filename, "w");
		fclose ($file);
	}

	// Read the file in
	$oscores = file ($filename);
	$numreadin = count($oscores);

	// Break out the data into a new 2-d array called $tscores
	for ($i = 0; $i < $numreadin; $i++)
	{
		$g = unserialize($oscores[$i]);
		$tscores[$i][0] = $g[0];
		$tscores[$i][1] = $g[1];
	}

	// Fill in any missing data with none/0
	for ($i = $numreadin; $i < $scoresize; $i++)
	{
		$tscores[$i][0] = 0;
		$tscores[$i][1] = "none";
	}

	// Process the actions	

	// Insert a score/name
	if ($action == "INSERT")
	{

		// Add name to end of list, and sort
		$tscores[$scoresize + 1][0] = $winscore;
		$tscores[$scoresize + 1][1] = $winname;
		rsort ($tscores);

		$file=fopen($filename, "w");

		// Write them out
		for ($i = 0; $i < $scoresize; $i++)
		{
			$st = serialize($tscores[$i]) . "\n";
			fputs($file, $st);
		}

		fclose($file);
	}

	// Clear the list	
	if ($action == "CLEAR")
	{

		$k[0] = 0;
		$k[1] = "none";
		$ser = serialize($k);

		$file=fopen($filename, "w");

		for ($i = 0; $i < $scoresize; $i++)
		{
			$st = $ser . "\n";
			fputs($file, $st);
		}

		fclose($file);
	}

	// Process the OUTPUT options
	if ($viewtype == "HTML")
	{
	  // HTML PAGE CREATED HERE
	  ?>


		<table cellpadding=2 cellspacing=2 border=0 width="152">
		<tr align=center> 
		<th bgcolor="#000033"><font color="#FFFFFF" face="Arial, Helvetica, sans-serif">#</font></th>
		<th bgcolor="#000033"><font color="#FFFFFF" face="Arial, Helvetica, sans-serif">Name</font></th>
		<th bgcolor="#000033"><font color="#FFFFFF" face="Arial, Helvetica, sans-serif">Score</font></th>
		</tr>

   	  <?
	
		for ($i = 0; $i < $scoresize; $i++)
		{
			echo ("<tr bgcolor='#666666' align='center'><td><font size='2' face='Arial, Helvetica, sans-serif'>");
			echo ($i + 1);
			echo ("</font></td><td><font size='2' face='Arial, Helvetica, sans-serif'>");
			echo ($tscores[$i][1]);
			echo ("</font></td><td><font size='2' face='Arial, Helvetica, sans-serif'>");
			echo ($tscores[$i][0]);
			echo ("</font></td></tr>");
		}

  	  ?>
		</table>
	  <?

	}

	// FLASH DATA CREATED HERE
	if ($viewtype == "FLASH")
	{
		for ($i = 0; $i < $scoresize; $i++)
		{
			echo ("NAME" . $i . "=");
			echo ($tscores[$i][1]);
			echo ("&SCORE" . $i . "=");
			echo ($tscores[$i][0]);
			echo ("&");
		}
	}

?>
mickd
Forum Contributor
Posts: 397
Joined: Tue Jun 21, 2005 9:05 am
Location: Australia

Post by mickd »

Just a guess without looking deeply into the code..

Replacing rsort with sort should reverse the current order.
dantleech
Forum Newbie
Posts: 11
Joined: Mon Oct 09, 2006 7:34 am
Location: UK

Post by dantleech »

Code: Select all

// Add name to end of list, and sort
      $tscores[$scoresize + 1][0] = $winscore;
      $tscores[$scoresize + 1][1] = $winname;
      rsort ($tscores);
sorry if this sounds dumb, have you tried using sort() instead of rsort()? failing that you may want to look at

usort() - lets you define how sorting is done
http://uk.php.net/manual/en/function.usort.php
Post Reply