webForumDet fria alternativet

tetris - poäng

12 svar · 377 visningar · startad av ampy

ampyMedlem sedan feb. 20011 498 inlägg
#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??

JojoxxMedlem 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?

ampyMedlem 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?

JojoxxMedlem 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">

ampyMedlem 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.

JojoxxMedlem 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.

ampyMedlem 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 ;)

JojoxxMedlem 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.

ampyMedlem 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?

JojoxxMedlem 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.

ampyMedlem 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

JojoxxMedlem 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.

ampyMedlem sedan feb. 20011 498 inlägg
#13

Oj, hade glömt ett =

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

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)