The Artima Developer Community
Sponsored Link

Java Answers Forum
Urgent Help needed

3 replies on 1 page. Most recent reply: Jan 15, 2003 7:01 PM by Tal

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 3 replies on 1 page
Tal

Posts: 4
Nickname: turk
Registered: Nov, 2002

Urgent Help needed Posted: Jan 15, 2003 6:00 PM
Reply to this message Reply
Advertisement
I have an assignment due in shortly, there are 2 questions. I have answered question 1 ok, but i am pulling my hair out with question 2 and it is worth an additonal 40% or so, any help would be GREATLY appreciated, I know people are very busy, so if you do not want to help, then I am fine with that, but please dont flame me for asking for help, I have never asked for help before on here. Anyways here are the questions:

Description of the Game - Task 1
(9 marks)
The task for this coursework is to develop a simulation of the classic "sliding square tiles" game we all, probably, played when we were young.

The game consists of 8 piece sliding buttons holding numbers 1 to 8, and one square blank space. Initially the 8 tiles are placed in a sorted order with the blank square in the lower right-hand corner.

To start the game, you need to first shuffle the pieces by clicking on the shuffle button.

The task is to rearrange the buttons in their numerical order by sliding only one button at a time, ending up with the blank space back in the lower right-hand corner. The game ends when all the buttons are arranged in a consecutive order with "1" in the upper-left corner.

My answer:
<HEAD>


<style>

.bigcell {

background-color:#aa9966;

border:4px solid #aa9966;

text-align:center;

}

.cell {

width:40px;

height:40px;

font-family:Verdana, Arial;

font-size:10pt;

font-weight:bold;

background-color:#FF7F50;

color:#ffff33;

border-top:2px solid #aa9966;

border-left:2px solid #aa9966;

border-right:2px solid #663300;

border-bottom:2px solid #663300;

text-align:center;

}

.hole {

width:40px;

height:40px;

background-color:#7FFFD4;

text-align:center;

}

body,h1,h2,h3,.msg,capt1,capt2 {font-family:Verdana,Comic Sans MS,Arial;}

body {margin:0px;}

h1 {font-size:28pt; font-weight:bold; margin-bottom:0px;}

h2 {font-size:16pt; margin:0px; font-weight:bold;}

h3 {font-size:8pt; margin:0px; font-weight:bold;}

.msg {font-size:8pt; font-weight:bold;}

.tab {cursor:hand;}

.capt1 {font-size:10pt; font-weight:bold;}

.capt2 {font-size:9pt; font-weight:bold;}

.capt3 {font-size:14pt; font-weight:bold; color:yellow;}

.capt4 {font-size:10pt; font-weight:bold; color:yellow;}

.but {font-size:9pt; font-weight:bold; height:30px;background-color:#aaaa99;}

</style>



</HEAD>







<BODY onLoad="loadBoard(3)">



<script>

var gsize, ghrow, ghcol, gtime, gmoves, gintervalid=-1, gshuffling;




//random number between low and hi

function r(low,hi)

{

return Math.floor((hi-low)*Math.random()+low);

}



//random number between 1 and hi

function r1(hi)

{

return Math.floor((hi-1)*Math.random()+1);

}



//random number between 0 and hi

function r0(hi)

{

return Math.floor((hi)*Math.random());

}



function startGame()

{

shuffle();

gtime = 0;

gmoves = 0;

tickTime();

gintervalid = setInterval("tickTime()",1000);

}



function stopGame()

{

if (gintervalid==-1) return;

clearInterval(gintervalid);

fldStatus.innerHTML = "";

gintervalid=-1;

}



function tickTime()

{

showStatus();

gtime++;

}



function checkWin()

{

var i, j, s;



if (gintervalid==-1) return; //game not started!



if (!isHole(gsize-1,gsize-1)) return;



for (i=0;i<gsize;i++)

for (j=0;j<gsize;j++)

{

if (!(i==gsize-1 && j==gsize-1)) //ignore last block (ideally a hole)

{

if (getValue(i,j)!=(i*gsize+j+1).toString()) return;

}

}

stopGame();



s = "<table cellpadding=4>";

s += "<tr><td align=center class=capt3>!! CONGRATULATIONS !!</td></tr>";

s += "<tr class=capt4><td align=center>You have done it in " + gtime + " secs ";

s += "with " + gmoves + " moves!</td></tr>";

s += "<tr><td align=center class=capt4>Your speed is " + Math.round(1000*gmoves/gtime)/1000 + " moves/sec</td></tr>";

s += "</table>";

fldStatus.innerHTML = s;

// shuffle();

}



function showStatus()

{

fldStatus.innerHTML = "Time: " + gtime + " secs Moves: " + gmoves

}



function showTable()

{

var i, j, s;



stopGame();

s = "<table border=3 cellpadding=0 cellspacing=0 bgcolor='#666655'><tr><td class=bigcell>";

s = s + "<table border=0 cellpadding=0 cellspacing=0>";

for (i=0; i<gsize; i++)

{

s = s + "<tr>";

for (j=0; j<gsize; j++)

{

s = s + "<td id=a_" + i + "_" + j + " onclick='move(this)' class=cell>" + (i*gsize+j+1) + "</td>";

}

s = s + "</tr>";

}

s = s + "</table>";

s = s + "</td></tr></table>";

return s;

}



function getCell(row, col)

{

return eval("a_" + row + "_" + col);

}



function setValue(row,col,val)

{

var v = getCell(row, col);

v.innerHTML = val;

v.className = "cell";

}



function getValue(row,col)

{

// alert(row + "," + col);



var v = getCell(row, col);

return v.innerHTML;

}



function setHole(row,col)

{

var v = getCell(row, col);

v.innerHTML = "";

v.className = "hole";

ghrow = row;

ghcol = col;

}



function getRow(obj)

{

var a = obj.id.split("_");

return a[1];

}



function getCol(obj)

{

var a = obj.id.split("_");

return a[2];

}



function isHole(row, col)

{

return (row==ghrow && col==ghcol) ? true : false;

}



function getHoleInRow(row)

{

var i;



return (row==ghrow) ? ghcol : -1;

}



function getHoleInCol(col)

{

var i;



return (col==ghcol) ? ghrow : -1;

}



function shiftHoleRow(src,dest,row)

{

var i;



//conversion to integer needed in some cases!

src = parseInt(src);

dest = parseInt(dest);



if (src < dest)

{

for (i=src;i<dest;i++)

{

setValue(row,i,getValue(row,i+1));

setHole(row,i+1);

}

}

if (dest < src)

{

for (i=src;i>dest;i--)

{

setValue(row,i,getValue(row,i-1));

setHole(row,i-1);

}

}

}



function shiftHoleCol(src,dest,col)

{

var i;



//conversion to integer needed in some cases!

src = parseInt(src);

dest = parseInt(dest);



if (src < dest)

{//alert("src=" + src +" dest=" + dest + " col=" + col);

for (i=src;i<dest;i++)

{//alert(parseInt(i)+1);

setValue(i,col,getValue(i+1,col));

setHole(i+1,col);

}

}

if (dest < src)

{

for (i=src;i>dest;i--)

{

setValue(i,col,getValue(i-1,col));

setHole(i-1,col);

}

}

}



function move(obj)

{

var r, c, hr, hc;



if (gintervalid==-1 && !gshuffling)

{

alert('Please press the "Start Game" button to start.')

return;

}

r = getRow(obj);

c = getCol(obj);

if (isHole(r,c)) return;



hc = getHoleInRow(r);

if (hc != -1)

{

shiftHoleRow(hc,c,r);

gmoves++;

checkWin();

return;

}



hr = getHoleInCol(c);



if (hr != -1)

{

shiftHoleCol(hr,r,c);

gmoves++;

checkWin();

return;

}

}



function shuffle()

{

var t,i,j,s,frac;



gshuffling = true;

frac = 100.0/(gsize*(gsize+10));

s = "% ";

for (i=0;i<gsize;i++)

{

s += "|";

for (j=0;j<gsize+10;j++)

{

window.status = "Loading " + Math.round((i*(gsize+10) + j)*frac) + s

if (j%2==0)

{

t = r0(gsize);

while (t == ghrow) t = r0(gsize); //skip holes

getCell(t,ghcol).click();

}

else

{

t = r0(gsize);

while (t == ghcol) t = r0(gsize); //skip holes

getCell(ghrow,t).click();

}

}

}

window.status = "";

gshuffling = false;

}



function loadBoard(size)

{

gsize = size;



board.innerHTML = showTable(gsize);

setHole(gsize-1,gsize-1);

//shuffle();

}

</script>

<body bgcolor="#666655" text="white">

<center>

<h1>Java Coursework year 2 2003</h1>

<span class=msg>Talat Nedjat January 2003<br> </span>



<table border=6 width="80%" cellpadding=4 cellspacing=0>

<tr><td width="98%"><h2>Arrange</h2></td>
<tr id=arrange><td colspan=3><h3>


<ol>

<li>The game board has blocks with numbers in it. Also there is a single "hole" that can be used for moving the blocks.</li>

<li>The objective of the game is to order the numbers using the "hole" for temporary movement.</li>

<li>Press the "Start Game" button. The timer will be started.</li>

<li>Order all the numbers in the shortest time possible with a minimum number of moves...</li>


</h3></td></tr>

</table>

<p& gt;

<div id=test></div>

<table cellpadding=4>

<tr><td align=center>

<b>Choose Level: </B>

<select id=level onchange="loadBoard(parseInt(level.value))">

<option value='3'>3</option>

<option value='4' selected>4</option>

<script>

for (var i=5;i<=10;i++)

{

document.write("<option value='" + i + "'>" + i + "</option>");

}

</script>

</select>

</td></tr> ;

<tr><td align=center>

<input type=button class=but value="Start Game" onclick="startGame();">

<tr><td align=center id=fldStatus class=capt2>

</td></tr>

</table>

<div id=board></div>

<p>

<p>

This works fine, it is the question that follows which has really bitten me in the ass


Task 2

Record Names of Players:
(8 marks)
At the end of every game your program should display the names and scores of the five players with the highest score (those who finished the game with the shortest time). If your player score is one of the highest then update your file to reflect the new score results.

Add a button to your game board to allow for the user of your system to display the names and scores of the 5 players with the highest points.

ANY HELP WOULD BE APRRECIATED, THANK YOU FOR TAKING THE TIME OUT TO READ THIS.

Tal


Tal

Posts: 4
Nickname: turk
Registered: Nov, 2002

Re: Urgent Help needed Posted: Jan 15, 2003 6:06 PM
Reply to this message Reply
As you can hopefully tell, I've coded the game in javascript and it is in the form of a html file.

Ugo Posada

Posts: 37
Nickname: binaryx
Registered: Dec, 2002

Re: Urgent Help needed Posted: Jan 15, 2003 6:26 PM
Reply to this message Reply
I?ve never coded in Javascript but my idea would be to have an array of 5 position holding the top 5 times, anytime a new player wins the game histime is compared with the values on the array, if its lower then its place in the array is found and the array is updated. I hope there is a Time library for Javascript.

To show the records HTML page you would only need to read this array and print the times inside of it.

Tal

Posts: 4
Nickname: turk
Registered: Nov, 2002

Re: Urgent Help needed Posted: Jan 15, 2003 7:01 PM
Reply to this message Reply
I hope the lecturer accepts this, it is a java module, i am used to coding in javascript from doing various websites, but it is a java module, but then the soursecode is essentially java.

Flat View: This topic has 3 replies on 1 page
Topic: losing an input stream after buffering it? Previous Topic   Next Topic Topic: Unreported exception-- Please help :-)

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use