Small Basic: implementarea jocului spânzurătoarea


Aţi văzut că săptămâna aceasta am avut mai mult scheme logice şi programe în Small Basic. M-am şi explicat de ce (un curs pregătit pentru copii, de iniţiere în Small Basic). Ca “examen final” m-am gândit la implementarea unui joc clasic, şi pe lângă X şi 0, deja prezentat, am făcut rapid şi unul pentru “spânzurătoarea”. Evident, vorbind de copii, nu am apelat chiar la spânzurătoare ci am optat pentru un număr de şase vieţi, din care se tot pierde câte una când greşeşti. Puteţi vedea jocul online aici.

imagine

Din nou, programarea nu este cea mai bună, nu e perfectă, nici optimă. Am căutat să rămân cumva pe mintea “cursanţilor”. Ce a ieşit vedeţi mai jos.

GraphicsWindow.Width=540
GraphicsWindow.Height=280
GraphicsWindow.CanResize="False"
GraphicsWindow.Title="Spanzuratoarea"
InitializareVieti()
InitializareCuvinte()
GraphicsWindow.KeyUp=Apasare

' subrutina se ocupa de afisarea numarului de vieti
Sub InitializareVieti
  vieti=6
  inima=ImageList.LoadImage("c:\tmp\heart.png")
  For i=1 To vieti
    sirinimi[i]=Shapes.AddImage(inima)
    Shapes.Move(sirinimi[i],10+90*(i-1),50)
  EndFor
  GraphicsWindow.BrushColor="DarkRed"
  GraphicsWindow.FontSize="20"
  cate=Shapes.AddText("Aveţi "+vieti+" vieţi.")
  Shapes.Move(cate,15,10)
EndSub

' subrutina se ocupa de alegerea unui cuvant
' si afisarile legate de cuvantul ales
Sub InitializareCuvinte
  varianta[1]="RINOCER"
  varianta[2]="PAPAGAL"
  varianta[3]="ELEFANT"
  varianta[4]="LEOPARD"
  varianta[5]="HIPOPOTAM"
  varianta[6]="VULTUR"
  varianta[7]="COLIBRI"
  varianta[8]="BALENA"
  varianta[9]="BROASCA"
  varianta[10]="LIBELULA"
  dim=Array.GetItemCount(varianta)
  cuvant=varianta[Math.GetRandomNumber(dim)]
  lungime=Text.GetLength(cuvant)
  indicatii=Shapes.AddText("Aveţi de ghicit un cuvânt de "+lungime+" litere.")
  Shapes.Move(indicatii,20,140)
  corecte=0
  GraphicsWindow.FontSize=43
  GraphicsWindow.FontName="Courier New"
  txtghicire=""
  For i=1 To lungime
    txtghicire=txtghicire+"_ "
    litere[i]=Text.GetSubText(cuvant,i,1)
    aflate[i]=0
  EndFor
  ghicire=Shapes.AddText(txtghicire)
  Shapes.Move(ghicire,20,200)
  litereposibile="QWERTYUIOPASDFGHJKLZXCVBNM"
  litereapasate=""
EndSub

' subrutina reactioneaza la apasarea unei taste (litere)
Sub Apasare
  litera=GraphicsWindow.LastKey
  If (vieti>0) And (corecte<lungime) And (Text.GetIndexOf(litereposibile,litera)<>0)  And (Text.GetIndexOf(litereapasate,litera)=0) Then
    litereapasate=Text.Append(litereapasate,litera)
    gasit=0
    For i=1 To lungime
      If litere[i]=litera And aflate[i]=0 Then
        aflate[i]=1
        gasit=1
        Sound.PlayClick()
        corecte=corecte+1
        txtghicire=""
        For j=1 To lungime
          If aflate[j]=1 Then
            txtghicire=txtghicire+litere[j]+" "
          Else
            txtghicire=txtghicire+"_ "
          EndIf
          Shapes.SetText(ghicire,txtghicire)
        EndFor
        If corecte = lungime Then
          Shapes.SetText(indicatii,"Aţi ghicit cuvântul! Bravo!!!")
          Sound.PlayChime()
        EndIf
      EndIf
    EndFor
    If gasit=0 Then
      Shapes.Animate(sirinimi[vieti],1000,50,1500)
      vieti=vieti-1
      Shapes.SetText(cate,"Mai aveţi "+vieti+" vieţi.")
      Sound.PlayChimes()
    EndIf
    If vieti=0 Then
      Shapes.SetText(indicatii,"Nu aţi reuşit să ghiciţi. Era cuvântul "+cuvant+".")
    EndIf
  EndIf
EndSub


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *