webForumDet fria alternativet

tetris - poäng

JavaScript

12 svar · 379 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Jag har laddat ner ett tetris men jag skulle nu vilja göra en topplista till det. Har denna kod från spelet så visar den aktuella poängen:

function Show_Score() {
  _block.score.document.forms[0].Game_Score.value = game_score;
}

Så här skriver den ut den aktuella poängen:

  layer_content = '<p class="info"><form>' +
    '<nobr><font size="1">Poäng</font></nobr>' +
    '<input type="text" name="Game_Score" maxlenght="6" size="6" value=0 onfocus="blur();"><br><br>' +
    '<nobr><font size="1">Rader till nästa level</font></nobr>' +
    '<input type="text" name="Lines_Remain" maxlenght="6" size="6" value=0 onfocus="blur();">' +
    '</form></p>';

Skriver ut den i en input alltså.

men nu undrar jag hur man kan spara den aktuella pängen i databasen. har kommit så här långt med koden:

if request.querystring("points") then

points = request.querystring("points")
If points <> "" then

	SQL = "SELECT * from ovrigt where sort = 'tetris' order by varde3 asc"
	Set RS = Connect.Execute(SQL)

		If cInt(points) > cInt(RS("varde3")) then

		SQL = "Insert Into ovrigt(sort, datum, username, varde, varde3) Values('tetris', '"&SweDate(Now)&"', '"&session("username")&"', '"&session("id")&"', "&points&")" 
  		Connect.Execute(SQL) 

		SQL4 = "DELETE from ovrigt where sort = 'tetris' order by varde3 asc"
		Connect.Execute(SQL4)

		End if

	Set rs = nothing

End If

end if

Men hur ska man få över poängen till denna asp-kod??

Medlem sedan juni 20004 308 inlägg
#2

Du är på god väg, men istället för att använda method="get" från formuläret skulle jag använda method="post" (och då request.form istället för request.querystring i ASP) för att minska risken för dubbelpostningar. Men, du har väl egentligen inga problem med JavaScript-biten utan mer en fråga hur du sparar informationen i db'n från ASP?

Medlem sedan feb. 20011 498 inlägg
#3

Jag förstår fortfarande inte hur jag ska få över poängen till ASP-koden.

Kan du inte visa med kod?

Medlem sedan juni 20004 308 inlägg
#4

Du har ju redan att formulärsfält med poängen. Ändra <form>-taggen så att den pekar på din ASP-sida (där du sparar informationen i din db); <form action="saveScore.asp" method="post"> Lägg till ett fält för namn; <input type="text" name="name"> och en spara-knapp; <input type="submit" value="Spara min poäng">

Medlem sedan feb. 20011 498 inlägg
#5

Men jag vill helst inte ha en knapp där man måste spara. Jag vill att det ska gå automatiskt.

Medlem sedan juni 20004 308 inlägg
#6

Har du redan något namn på spelaren då? Har du spelat arkad någon gång har du säkert märkt att man brukar ange det efter att man spelat klart och fått en poäng som platsar på hi-score listan.

Men visst kan du scripta det. Använd _block.score.document.forms[0].submit() för att skicka formuläret automatiskt.

Medlem sedan feb. 20011 498 inlägg
#7

Jag ska ha detta i mitt community och då har jag ju användarnamnet genom ett session.

Vart ska jag sätta den koden?

Kan inte så mycket om JavaScript som du kanske märker ;)

Medlem sedan juni 20004 308 inlägg
#8

Du borde ha någon funktion eller script-snutt som körs vid "game over". Lägg den sist där.

Medlem sedan feb. 20011 498 inlägg
#9

Nu har jag lagt den vid denna funktion:

function Game_Over() {
  Event_Release();

  clearInterval(block_timer_id);

  if (game_winner)
    _block.blockxx.innerHTML = game_winner_tag
  else
    _block.blockxx.innerHTML = game_over_tag;

  _block.blockxx.style.pixelTop = block_base_y;

  game_winner = false;
  game_pause = false;
  game_finished = true;

  game_tag_step = game_tag_offset;

  setTimeout("Show_Tag()",movement_timer);

  [B]_block.score.document.forms[0].submit()[/B]
}

Vad händer när _block.score.document.forms[0].submit() körs?

Medlem sedan juni 20004 308 inlägg
#10

Tidigare nämnt formulär (du måste alltså lägga till action etc. för formuläret som jag nämnde tidigare) skickas. Jag utgår från att _block.score.document.forms[0] stämmer eftersom det används för att skriva ut poängen.

Medlem sedan feb. 20011 498 inlägg
#11

Har försökt med detta nu men det funkar inte:

Så har sparar jag poängen i databasen:

if request.querystring("points") then

points = request.form("Game_Score")
If points <> "" then

	SQL = "SELECT * from ovrigt where sort = 'tetris' order by varde3 asc"
	Set RS = Connect.Execute(SQL)

		If cInt(points) > cInt(RS("varde3")) then

		SQL = "Insert Into ovrigt(sort, datum, username, varde, varde3) Values('tetris', '"&SweDate(Now)&"', '"&session("username")&"', '"&session("id")&"', "&points&")" 
  		Connect.Execute(SQL) 

		SQL4 = "DELETE from ovrigt where sort = 'tetris' order by varde3 asc"
		Connect.Execute(SQL4)

		End if

	Set rs = nothing

End If

end if

Poängen får jag alltså från request.form("Game_Score")
från detta formulär:

  layer_content = '<p class="info"><form method="post" action"tetris2.asp?points">' +
    '<nobr><font size="1">Poäng</font></nobr>' +
    '<input type="text" name="Game_Score" maxlenght="6" size="6" value=0 onfocus="blur();"><br><br>' +
    '<nobr><font size="1">Rader till nästa level</font></nobr>' +
    '<input type="text" name="Lines_Remain" maxlenght="6" size="6" value=0 onfocus="blur();">' +
    '<br><br><i><font color="#000000" size="1" face="verdana"><nobr>Din poäng sparas</nobr> <nobr>automatsikt när</nobr> <nobr>spelet är över.</nobr></font></i></form></p>';
  _block.score.innerHTML = layer_content;

Kolla om jag har gjort rätt i form-taggen :q

Och så här ser det ut vid game over:

function Game_Over() {
  Event_Release();

  clearInterval(block_timer_id);

  if (game_winner)
    _block.blockxx.innerHTML = game_winner_tag
  else
    _block.blockxx.innerHTML = game_over_tag;

  _block.blockxx.style.pixelTop = block_base_y;

  game_winner = false;
  game_pause = false;
  game_finished = true;

  game_tag_step = game_tag_offset;

  setTimeout("Show_Tag()",movement_timer);

  [B]_block.score.document.forms[0].submit()[/B]
}

Men poängen sparas inte i databasen. Vart har jag gjort fel?

:q

Medlem sedan juni 20004 308 inlägg
#12

Nja, action"tetris2.asp?points" skall vara action="tetris2.asp?points"

När du ändrat detta, laddas så sidan "tetris2.asp"? Gör den det kan vi nämligen gå vidare och titta på ASP-koden.

Medlem sedan feb. 20011 498 inlägg
#13

Oj, hade glömt ett =

Men nu funkar iaf allt som det ska. Tackar så mycket :birp

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)