Kalo te përmbajtja

7 min lexim

American Corners

Projekti final: ndërto një lojë me Turtle

Çfarë do të ndërtosh

Deri tani i ke takuar të gjitha pjesët që të duhen: Turtle-in, robotin në ekran, ciklet që përsërisin, funksionet që ta rregullojnë kodin, listat që mbajnë shumë gjëra bashkë, dhe ngjarjet që reagojnë ndaj një tasti a një kliku. Projekti final është aty ku i bashkon këto pjesë në një lojë të vogël që punon dhe që mund t'ia tregosh dikujt.

Qëllimi është modest me qëllim. Jo një lojë komerciale të lëmuar, por thjesht një lojë që punon: një turtle që lëviz kur shtyp një tast, diçka për të arritur ose për të shmangur, dhe një mënyrë për të fituar ose humbur. Nëse punon dhe dikush tjetër mund ta luajë, mjafton.

Mund të punosh vetëm ose në grup. Shumica ndahen në dyshe, i ndajnë pjesët mes tyre dhe i bashkojnë copat në seancat e fundit.

Zgjidh projektin tënd

Zgjidh një ide dhe qëndro te ajo. Një lojë e vogël e mbaruar vlen më shumë se një lojë ambicioze e pambaruar. Katër ide që i shkojnë Turtle-it për shtat:

  • Snake. Një katror lëviz nëpër ekran me tastet me shigjeta, rritet sa herë ha një pikë dhe mbaron nëse godet murin. Ky është pikënisja më miqësore.
  • Iks-Oks (Tic-Tac-Toe). Vizato një rrjetë, lëri dy lojtarë të klikojnë katrorët për të vendosur X dhe O, dhe kontrollo për tri me radhë. E mirë nëse i parapëlqen klikimet ndaj lëvizjes.
  • Labirinti. Vizato muret, vendos lojtarin te nisja dhe lëri tastet me shigjeta ta çojnë te dalja pa kaluar asnjë mur.
  • Loja e Jetës e Conway-t. Një rrjetë qelizash që ndizen e fiken sipas disa rregullave të thjeshta fqinjësie. Më abstraktja e të katërtave, dhe shumë e bukur nëse të pëlqejnë motivet.

Demoja në leksion ishte një lojë e vogël SpaceShip e ndërtuar në të njëjtën mënyrë: një turtle që e drejton, një cikël që e mban lojën gjallë dhe funksione për secilin veprim. Cilëndo që zgjedh, skeleti mbetet i njëjtë.

Ndërtoje hap pas hapi

Mos u përpiq ta shkruash tërë lojën përnjëherë. Ndërtoje me hapa të vegjël dhe provoje pas secilit, që të kesh gjithmonë diçka që punon.

  1. Projektoje në letër. Një ose dy fjali: çfarë është loja, çfarë bën lojtari dhe si fitohet a humbet. Kjo është harta jote.
  2. Lëviz një turtle me tastet. Vendos në ekran një turtle që drejtohet me shigjetat. Asgjë tjetër për momentin.
  3. Shto qëllimin. Ushqim për të ngrënë, mur për të shmangur, katror për të pushtuar. Ruaji pozicionet në një listë, që të mund t'i shtosh e t'i heqësh.
  4. Shto pikët dhe një fund. Një numërues që ngrihet, dhe një kusht që e ndal lojën.
  5. Lëmoje. Ngjyra, një titull, një mesazh të shkurtër "shtyp një shigjetë për të nisur".

Hapi 2 është zemra e gjithçkaje, dhe është i shkurtër. Ja një skelet që punon: një katror i bardhë që e drejton me tastet me shigjeta.

import turtle

screen = turtle.Screen()
screen.title("Loja ime")
screen.bgcolor("black")

player = turtle.Turtle()
player.shape("square")
player.color("white")
player.penup()

step = 20

def go_up():
    player.sety(player.ycor() + step)

def go_down():
    player.sety(player.ycor() - step)

def go_left():
    player.setx(player.xcor() - step)

def go_right():
    player.setx(player.xcor() + step)

screen.listen()
screen.onkey(go_up, "Up")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
screen.onkey(go_right, "Right")

turtle.done()

Vër re se çdo pjesë që ke mësuar është tashmë këtu: një turtle i ruajtur në një variabël, një funksion i vogël për secilin veprim, dhe dëgjuesit e ngjarjeve që lidhin një tast me një funksion. Nga kjo bazë, hapi 3 është thjesht të shtosh një turtle të dytë për ushqimin dhe një listë ku ndodhet ushqimi.

Ja hapi 3 në kod. Shto një turtle ushqim, një mënyrë për ta hedhur në një vend të rastësishëm, dhe një kontroll për çastin kur lojtari e arrin:

import random

food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()

def place_food():
    food.goto(random.randint(-9, 9) * 20, random.randint(-9, 9) * 20)

place_food()

score = 0

def check_food():
    global score
    if player.distance(food) < 20:
        score += 1
        place_food()

Shto një rresht, check_food(), në fund të secilit prej katër funksioneve të lëvizjes. Tani sa herë që lojtari bie mbi ushqimin, rezultati rritet dhe ushqimi tjetër shfaqet në një vend të ri. Kjo është hapi 3 dhe fillimi i hapit 4 në një duzinë rreshtash, e ndërtuar vetëm nga një turtle, një pozicion i rastësishëm, një funksion për çdo punë, dhe ngjarjet që i ke lidhur tashmë.

Praktikë

Nise skeletin, pastaj ndrysho një gjë të vetme çdo herë: bëje step më të madh, ndërro ngjyrat, ose shto një funksion go_faster të lidhur me një tast tjetër. Çdo ndryshim të vogël që e kupton është një copë që mund ta ripërdorësh në lojën tënde.

Paraqite

Seanca e fundit është një vitrinë. Grupet i kalojnë takimet e fundit duke i bashkuar copat në një rezultat që punon, luajnë lojërat e njëri-tjetrit dhe pastaj prezantojnë. Në notën e kursit projekti vlen 30% dhe prezantimi 10%, ndaj të treguarit ka rëndësi, jo vetëm kodi.

Një prezantim i shkurtër dhe i sinqertë punon më mirë:

  • Trego lojën duke punuar në fillim. Lëri njerëzit ta shohin të luhet para se të shpjegosh asgjë.
  • Thuaj çfarë bën me një fjali, pastaj çfarë ishte më e vështira dhe si e zgjidhe.
  • Thuaj kush çfarë bëri nëse punuat në grup.
  • Nuk ka gjë nëse diçka është e pambaruar. Thuaj çfarë do të shtoje më pas.

Nuk po vlerësohesh për të bërë një lojë të përsosur. Po tregon se mund të marrësh një ide, ta ndash në pjesë dhe t'i ndërtosh ato pjesë me mjetet e këtij kursi.

Para pyetjeve më poshtë, vendos hapat e ndërtimit në rendin që të lë gjithmonë me diçka që punon:

Rendit hapat e ndërtimit

Zvarrit një hap nga doreza, përdor butonat ▲ / ▼, ose fokusoje e shtyp Enter për ta marrë e pastaj përdor tastet me shigjeta. Pastaj kontrollo rendin.

Provo veten

  1. Pse është më mirë ta ndërtosh lojën hap pas hapi dhe ta provosh pas çdo hapi, në vend që ta shkruash të gjithën para se ta testosh?
  2. Në skeletin më lart, cilat dy përbërës nga leksionet e mëparshme e lidhin shtypjen e një tasti me lëvizjen e turtle-it?
  3. Nëse do të të mbetej vetëm një seancë dhe loja jote nuk do të ishte e mbaruar, çfarë do të zgjidhje të tregoje, dhe çfarë do të thoshe për pjesët që mungojnë?

Nga vjen ky mësim

Ndërtuar mbi

  • Programming in a Data World: Leksioni 6 (loja SpaceShip me Turtle) dhe sllajdet me ide projektesh
  • Rrëfimi i Prezantimit Final (Lecture and Workshops Summaries); vlerësimi i syllabusit (Projekti 30%, Prezantimi 10%, 6 Detyra 60%)

Kurset e alphaPlan ndërtohen mbi programe të zhvilluara në klasë, e nuk shpiken për web-in. Kur një pohim mbështetet mbi një standard të jashtëm ose mbi një rast të raportuar, ai emërtohet më sipër që ta kontrollosh vetë e të mos na besosh në fjalë.

Ky kurs u zhvillua nga alphaPlan Center mbi bazën e programeve të realizuara në partneritet me rrjetin American Corners.

Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim