Mario
Jump to navigation
Jump to search
Super Mario žaidimas
Ši programa demonstruoja, kaip susikurti klasikinį Super Mario stiliaus žaidimą, kuriame veikėjas turi pereiti per žemėlapį ir paimti monetą, kuri atsiranda vis kitoje žemėlapio vietoje. Žaidimo tikslas surinkti, kuo daugiau monetų neiškritus iš žemėlapio ar nesusidūrus su priešu.
Šioje programėlėje panaudoti keli skirtingi vaizdo failai ir garsai, kurie atsiranda priklausomai nuo atlikto veiksmo.
Žaisti Super Mario
Žaidimui reikalingi failai
Visus garsus ir vaizdus panaudotus šiame žaidime galima atsisiųsti čia.
Super Mario žaidimo kodas
reikalinga angis
reikalingas žaidimas
scena = žaidimas.Scena(plotis=600, aukštis=400, plytelėsPlotis = 16, plytelėsAukštis = 16)
angis.naudosiuFailus([
'belekas/image/mario.single.png',
'belekas/image/mario.single.png',
'belekas/image/mario.didelis.png',
'belekas/image/mario.json',
'belekas/image/plyt.png',
'belekas/image/plyt_2.png',
'belekas/image/plyt_3.png', # permatomas
'belekas/image/moneta.png',
'belekas/image/gumbaMires.png',
'belekas/image/fonas.png',
'belekas/image/gumba.1.png',
'belekas/image/gumba.2.png',
'belekas/garsas/suolis.mp3',
'belekas/garsas/moneta.mp3',
'belekas/garsas/stomp.mp3',
'belekas/garsas/fonas.mp3',
])
marioPermatomas = 'belekas/image/plyt_3.png'
marioNejuda = 'belekas/image/mario.didelis.png'
šuolioGarsas = angis.Garsas("belekas/garsas/suolis.mp3")
monetosPaėmimoGarsas = angis.Garsas("belekas/garsas/moneta.mp3")
stompGarsas = angis.Garsas("belekas/garsas/stomp.mp3")
fonasGarsas = angis.Garsas("belekas/garsas/fonas.mp3")
žaidimas.duokSceną().fonas('belekas/image/fonas.png')
k1 = žaidimas.Plytelė('belekas/image/plyt_3.png')
k2 = žaidimas.Plytelė('belekas/image/plyt_2.png')
scena.pridėkPlyteles(
[
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1],
[ k2, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k2, k1, k1, k1, k1, k1, k1, k2, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k1, k2],
[ k2, k2, k2, k2, k2, k2, k1, k1, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k2, k1, k1, k2, k2, k2, k2, k2, k2, k2, k2]
]
, plytelėsPlotis = 16, plytelėsAukštis = 16)
kampas = 360
reikiaJudėti = False
judėtDešinėn = False
judėtkairėn = False
judėtViršun = False
judetŽemyn = True
sakytiSkrendu = True
pagreitisY = 0
žaisti = True
komanda dešinėn():
global judėtDešinėn
global judėtkairėn
judėtDešinėn = True
judėtkairėn = False
komanda kairėn():
global judėtDešinėn
global judėtkairėn
judėtDešinėn = False
judėtkairėn = True
komanda atleidusDešinėn():
global judėtDešinėn
judėtDešinėn = False
komanda atleidusKairėn():
global judėtkairėn
judėtkairėn = False
# komanda atleidusKlavišą():
# global reikiaJudėti
# reikiaJudėti = False
komanda šokti():
global pagreitisY
koordinates = mario.duokKoordinates()
easterEgg = koordinates[0] >= 438 and koordinates[1] <= 462
if easterEgg or atstumas == 0:
pagreitisY = -12
šuolioGarsas.grokFone()
komanda atstumasIkiPlatformos():
global plaformos
koordinates = mario.duokKoordinates()
for platforma in plaformos:
if koordinates[0] + 16 >= platforma[0] and koordinates[0] <= platforma[0] + platforma[2]:
return koordinates[1]+32-platforma[1]
return -99
komanda mirtis():
global žaisti
žaisti = False
print("Žaidimas baigėsi. Pralaimėjai")
mario.atsirask(999, 999) # mario.pasislėpk()
moneta.atsirask(9999, 9999)
komanda laimėjimas(mario, x, y):
global žaisti
žaisti = False
print("Laimėjai")
mario.atsirask(999, 999) # mario.pasislėpk()
moneta.atsirask(9999, 9999)
komanda paimtiMonetą(mario, x, y):
global paimtaMonetų
global monetaXdešinėja
global monetaXkairėja
global moneta
global gumbaGyvas
monetosPaėmimoGarsas.grokFone()
monetosKoord = moneta.duokKoordinates()
x = monetaXdešinėja
if monetosKoord[0] == monetaXdešinėja:
x = monetaXkairėja
moneta.atsirask(x, monetaY)
paimtaMonetų += 1
atnaujintiŠvieslentę()
if not gumbaGyvas:
gumbaKoordinates = gumbaMires.duokKoordinates()
gumba.atsirask(gumbaKoordinates[0], gumbaKoordinates[1]-7)
gumbaMires.atsirask(9999,9999)
gumbaGyvas = True
komanda fonoTaimeris():
fonasGarsas.grokFone()
angis.Taimeris(fonoTaimeris, 76.8)
fonoTaimeris()
angis.paspaudus("w", šokti)
angis.paspaudus(" ", šokti)
# angis.atleidus("w", atleidusŠokti)
angis.paspaudus("d", dešinėn)
angis.atleidus("d", atleidusDešinėn)
angis.paspaudus("a", kairėn)
angis.atleidus("a", atleidusKairėn)
blokas1 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
blokas1.nustatykKliūtį(x = 0, y = 16*15, plotis = 16, aukštis = 32)
blokas2 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
blokas2.nustatykKliūtį(x = 11*16, y = 16*15, plotis = 16, aukštis = 16)
# blokas2.rodykZonas()
blokas3 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
blokas3.nustatykKliūtį(x = 16*18, y = 16*15, plotis = 16, aukštis = 16)
blokas4 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
blokas4.nustatykKliūtį(x = 29*18+6, y = 16*15, plotis = 16, aukštis = 16)
# x, y, plotis
plaformos = [
[0 +6, 16*15, 16*1 -9], # blokas1
[11*16+6, 16*15, 16*1 -9], # blokas2
[16*18+6, 16*15, 16*1 -9], # blokas3
[29*18+6, 16*15, 16*1 -9], # blokas4
[0, 16*16, 16* 6], # platforma1
[16* 8, 16*16, 16* 16], # platforma2
[16*26, 16*16, 16* 8], # platforma3
]
plaforma1 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
plaforma1.nustatykKliūtį(x = 0, y = 16*16, plotis = 16*6, aukštis = 16)
plaforma2 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
plaforma2.nustatykKliūtį(x = 16*8, y = 16*16, plotis = 16*16, aukštis = 16)
plaforma3 = žaidimas.Daiktas('belekas/image/plyt_3.png', 0, 0)
plaforma3.nustatykKliūtį(x = 16*26, y = 16*16, plotis = 16*8, aukštis = 16)
lapas1 = žaidimas.AnimacijųLapas('belekas/image/mario.json')
mario = žaidimas.Veikėjas(failoVardas = 'belekas/image/plyt_3.png', tag = 'mario')
# mario = žaidimas.Veikėjas(failoVardas = 'belekas/image/mario.single.png', tag = 'mario')
# mario.animuok(judesys="idle", animacija=lapas1.animacija("idle", 0.05))
# mario.animuok(judesys="east", animacija=lapas1.animacija("walksE", 0.11))
# mario.animuok(judesys="south", animacija=lapas1.animacija("idle", 0.11))
w = žaidimas.Animacija(failoVardas = "belekas/image/mario.json", pavadinimas="walksW", greitis=0.11)
e = žaidimas.Animacija(failoVardas = "belekas/image/mario.json", pavadinimas="walksE", greitis=0.11)
# mario.rodykVektorių()
mario.atsirask(2*16, 16*14)
mario.žiūrėk(kampas)
mario.žingsnioIlgis(16)
mario.greitis(3)
# mario.rodykZonas()
monetaXdešinėja = 32*16
monetaXkairėja = 2*16
monetaY = 16*14
moneta = žaidimas.Daiktas('belekas/image/moneta.png')
moneta.atsirask(monetaXdešinėja,monetaY)
moneta.nustatykKliūtį(x=monetaXdešinėja, y=monetaY, plotis=40)
mario.susidūrus(moneta, paimtiMonetą)
komanda atnaujintiŠvieslentę():
return švieslentė.tekstas("Monetų: " + str(paimtaMonetų))
paimtaMonetų = 0
švieslentė = žaidimas.Tekstas(" ")
švieslentė.dydis(25)
švieslentė.spalva("#FFFFFF")
švieslentė.atsirask(x = 10, y = 20)
atnaujintiŠvieslentę()
gumba = žaidimas.Veikėjas(failoVardas = 'belekas/image/gumba.1.png', tag = 'gumba')
gumbaMires = žaidimas.Veikėjas(failoVardas = 'belekas/image/gumbaMires.png', tag = 'gumbaMires')
gumbaKairen = True
gumbaX = 15*16
gumbaGyvas = True
gumba1 = True
gumbaKeiskPaveiksliuką = 10
gumba.atsirask(gumbaX, 16*15-1)
gumba.nustatykKliūtį(x=15*16, y=16*15-1, plotis=16)
gumba.žiūrėk(kampas)
gumba.žingsnioIlgis(16)
gumba.greitis(1)
judetiPo = 0
print("Paimk monetą")
while žaisti:
atstumas = atstumasIkiPlatformos()
koordinates = mario.duokKoordinates()
if koordinates[1] < 50 and sakytiSkrendu:
mario.sakyk("Skrendu !!!")
sakytiSkrendu = False
gumbaKoordinates = gumba.duokKoordinates()
# mario liečia gumba iš kairės arba dešinės
if koordinates[0] + 16-3 >= gumbaKoordinates[0] and koordinates[0] <= gumbaKoordinates[0] +16+3:
diffY = gumbaKoordinates[1] - koordinates[1]
if diffY <= 32 and diffY >=26:
gumbaMires.atsirask(gumbaKoordinates[0], gumbaKoordinates[1]+7)
gumba.atsirask(9999,9999)
gumbaGyvas = False
stompGarsas.grokFone()
elif diffY < 26:
mirtis()
if gumbaGyvas:
# pasukam gumba eit i kaire ar desine
if gumbaKoordinates[0] <= 12*16:
gumbaKairen = False
if gumbaKoordinates[0] >= 16*17:
gumbaKairen = True
# gumba pajuda
if gumbaKairen:
gumbaX -= 1
else:
gumbaX += 1
gumba.atsirask(gumbaX, 16*15-1)
if gumbaKeiskPaveiksliuką > 0:
gumbaKeiskPaveiksliuką -= 1
else:
if gumba1:
gumba.naudokPaveiksliuką('belekas/image/gumba.1.png')
gumba1 = False
gumbaKeiskPaveiksliuką = 10
else:
gumba.naudokPaveiksliuką('belekas/image/gumba.2.png')
gumba1 = True
gumbaKeiskPaveiksliuką = 10
if koordinates[1] >= 16*16:
mirtis()
break
# atstatyti veikėja ant platformos
atstatyta = False
if atstumas > 0:
atstatyta = True
mario.atsirask(koordinates[0], koordinates[1]-atstumas)
judėtViršun = False
if not atstatyta and (judėtDešinėn or judėtkairėn or judėtViršun or judetŽemyn):
dy = 0
dx = 0
if pagreitisY != 0:
dy = pagreitisY
pagreitisY += 1
if abs(pagreitisY) <= 1:
pagreitisY = 0
else:
if atstumas < 0:
dy = 3*4
if judėtDešinėn:
dx = 16
if judėtkairėn:
dx=-16
if dx != 0 or dy != 0:
dx /=8
dy /=2
if dx < 0:
e.pasislėpk()
w.atsirask(koordinates[0] + dx, koordinates[1] + dy)
w.grokFone()
else:
w.pasislėpk()
e.atsirask(koordinates[0] + dx, koordinates[1] + dy)
e.grokFone()
mario.atsirask(koordinates[0] + dx, koordinates[1] + dy)
mario.naudokPaveiksliuką(marioPermatomas)
else:
mario.naudokPaveiksliuką(marioNejuda)
w.pasislėpk()
e.pasislėpk()
angis.palauk(10)
Svarbu! Nepamiršk įsikelti žaidime naudojamus paveiksliukus ir garsus per failų tvarkyklę. Visi Super Mario žaidimui reikalingi failai yra čia.