Cluiche

Cluiche Preibe

Anois bainimis úsáid as ár n-eolas nua agus roinnt gníomhartha nua chun cluiche a chruthú cosúil leis na cluichí cáiliúla PongBreakout. Beidh slacán againn ag bun an stáitse agus beidh muid ábalta é a bhogadh chun breith ar an liathróid ag preabadh.

An cluiche

An Lúb Tarraingthe

Chun ár ngrafaicí a smachtú bainfimid úsáid as “lúb tarraingthe”. Is coincheap simplí é lúb tarraingthe: Cruthóimid gníomh chun na páirteanna dár gcluiche a tharraingt ar an stáitse agus glaofaimid air arís agus arís i lúb, ní stopfaimid go dtí go stopann an cluiche.

Tar éis gach glaoch ar an gníomh, ba chóir dúinn fanacht ar feadh cúpla milleasoicind chun caochaíl a sheachaint.

Tosaímis leis an cód seo:

gníomh tarraing_stáitse() {
    >-- Cuirfimid ár cód tarraingthe anseo.
}

>-- Lúb go deo.
nuair-a fíor {
    >-- Glaoigh ar an gníomh tarraing_stáitse.
    tarraing_stáitse()

    >-- Codail ar feadh cúple milleasoicind.
    codladh(10)
}

An Slacán

Tosaímis anois leis an slacán. Teastaíonn slacán uainn ar féidir linn bogadh ar chlé agus ar dheis ag bun an stáitse. Cruthaímis roinnt athróga agus cuirimis cód sa ghníomh tarraing_stáitse chun an slacán a tharraingt.

Cruthaímis athróga airde_slacáin agus lthd_slacáin le haghaidh airde agus leithead an slacáin. Le haghaidh an airde, is féidir linn luach beag (m.sh. 20) chun slacán beag ach infheicthe a fháil. Le haghaidh an leithead is féidir linn fad_x@stáitse a úsáid chun leithead a roghnú ata cothrom le 20% de leithead an stáitse.

Anois cuirimid an cód seo sa ríomhchlár:

airde_slacáin := 20
lthd_slacáin := fad_x@stáitse // 5

Anois is féidir linn 2 athróg nua x_slacáin agus y_slacáin a dhéanamh. Cuirfimid an x- comhordanáid agus an y-comhordanáid sna hathróga sin. Go sonrach, cuirimid comhordanáidí an cúinne ag an mbarr ar dheis den slacán sna hathróga sin. Ba mhaith linn tosú leis an slacán ag bun an stáitse ar an taobh clé, dá bhrí sin tosóimid le x_slacáin cothrom le 0, ach cad a úsáidfimid le haghaidh y_slacáin? Má úsáidimid 0 beidh an slacán ag barr an stáitse, ach má úsáidfimid fad_y@stáitse ní bheimid in ann an slacán a fheiceáil mar beidh sé faoi bhun an stáitse. Caithfimid airde an slacáin a bhaint as airde an stáitse chun an y-comhordanáid ceart a fháil: fad_y@stáitse - airde_slacáin.

y_slacáin

Anois seo é ár ríomhchlár reatha.

airde_slacáin := 20
lthd_slacáin := fad_x@stáitse // 5

x_slacáin := 0
y_slacáin := fad_y@stáitse - airde_slacáin

gníomh tarraing_stáitse() {
    >-- Cuirfimid ár cód tarraingthe anseo.
}

>-- Lúb go deo.
nuair-a fíor {
    >-- Glaoigh ar an gníomh tarraing_stáitse.
    tarraing_stáitse()

    >-- Codail ar feadh cúple milleasoicind.
    codladh(10)
}

Tarraing an slacán

Anois tá a fhios againn cá bhfuil ár slacán (x_slacáin, y_slacáin) agus cé chomh mór atá sé (airde_slacáin, lthd_slacáin), is féidir linn é a tharraingt.

Sula dtarraingeoimid ár slacán, ba chóir dúinn an stáitse a ghlanadh chun aon sean-rudaí a scriosadh. Bainimid úsáid as an gníomh glan@stáitse chun é sin a dhéanamh.

Tar éis é sin, is féidir linn dath an pinn a athrú. Ba mhaith liom slacán dearg a tharraingt, mar sin athróidh mé an dath go dearg le dath@stáitse("dearg").

Anois táimid in ann an gníomh dron_lán@stáitse a úsáid chun dronuilleog lán a tharraingt le haghaidh an slacán. Glacann sé le 4 argóint: an x-comhordanáid, an y-comhordanáid, an leithead agus an airde:

Anois seo é ár gníomh tarraing_stáitse:

gníomh tarraing_stáitse() {
    >-- Glan an stáitse
    glan@stáitse()

    >-- Úsáid peann dearg
    dath@stáitse("dearg")

    >-- Tarraing an slacán
    dron_lán@stáitse(x_slacáin, y_slacáin, lthd_slacáin, airde_slacáin)
}

Anois bainimis triail as ár ríomhchlár:

Ná dean dearmad an cnaipe a bhrú chun an ríomhchlár a stopadh

Bá chóir duit slacán beag dearg ag bun an stáitse a fheiceáil.

Bog an slacán

Anois is féidir linn an slacán a tharraingt ach conas a bhogaimid é? Is féidir linn an gníomh méarchlár a úsáid chun gach eochairbhrú a fháil ón úsáideoir.

Ar dtús, cruthaímis gníomh nua agus tugaimis smacht_eochrach air. Glaofar ar an gníomh seo nuair a brúnn an úsáideoir eochair ar an méarchlár. Bá chóir dó glacadh le hargóint amháin: an eochair a bhí brúite.

gníomh smacht_eochrach(eochair) {
}

Anois cuirimis scríobh(eochair) sa ghníomh, ach athróimid é sin níos déanaí.

gníomh smacht_eochrach(eochair) {
    scríobh(eochair)
}

Bainimid úsáid as an gníomh méarchlár@stáitse chun ár ngníomh nua a nascadh leis an méarchlár. Glaoimid ar méarchlár@stáitse(smacht_eochrach) chun é sin a dhéanamh.

Tosaigh an ríomhchlár nua anseo, brúigh ar na saigheadeochracha ar do mhéarchlár agus ansin bog go dtí an consól agus féach air.

Ba chóir duit “ArrowRight”, “ArrowLeft”, “ArrowDown” nó “ArrowUp” a fheiceáil ar an gconsól. Tá na hainmneacha seo as Béarla mar is ainmneacha caighdeánacha iad, tagann na hainmneacha ón brabhsalaí, ní rudaí Setanta iad. Nuair a bhrúnn tú ar eochair éigin agus an ríomhchlár ar siúl, glaoitear ar smacht_eochrach le ainm na heochrach. Is féidir linn an cumas seo a úsáid chun an slacán a bhogadh nuair a bhrúitear ar an saighead chlé nó dheis.

Cruthaímis anois athróg nua luas_slacáin chun luas an slacáin a smachtú (cé chomh fada a bhogann an slacán nuair a bhrúnn an úsáideoir saighead éigin). Tosaímis leis an luach 50.

Anois is féidir linn cód a chur inár ngníomh smacht_eochrach chun an athróg x_slacáin a athrú chun an slacán a bhogadh ar dheis nó ar chlé mar seo:

luas_slacáin := 50

gníomh smacht_eochrach(eochair) {
     eochair == "ArrowLeft" {
        x_slacáin -= luas_slacáin
    }   eochair == "ArrowRight" {
        x_slacáin += luas_slacáin
    }
}

Oibríonn an cód mar seo: má brúitear an saighead chlé, glaoitear ar an ngníomh smacht_eochrach leis an téacs “ArrowLeft”; Má tharlaíonn é sin, laghdaímid an athróg x_slacáin faoi luas_slacáin. Ar an lámh eile, má brúitear an saighead dheis, glaoitear ar an gníomh le “ArrowRight” agus méadaímid x_slacáin faoi luas_slacáin.

Bain triail as an cód nua: Brúigh ar ← nó → agus ba chóir duit an slacán a fheiceáil ag bogadh.

An Liathróid

Tá ár slacán againn, agus tá sé in am an liathróid a chruthú chun preabadh timpeall an stáitse. Díreach mar a rinneamar don slacán, déanaimis athróga nua chun áit an liathróid a stóráil x_liathróide agus y_liathróide. Ba mhaith linn tosú leis an liathróid sa chúinne ag barr ar chlé, dá bhrí sin tosaímis le x_liathróide agus y_liathróide cothrom le 0.

Anois cruthaímis athróg nua do gha na liathróide agus cuirimis 30 isteach.

Faoi dheireadh, tá 2 athróg uainn chun treo na liathróide a smachtú. Tugaimid dx_liathróide agus dy_liathróide orthu. Is é an luas sa threo x é dx_liathróide agus is é an luas sa threo y dy_liathróide. Tosaímis leo araon cothrom le 2.

x_liathróide := 0
y_liathróide := 0

ga_liathróide := 30

dx_liathróide := 2
dy_liathróide := 2

Tarraing an Liathróid

Anois cuirimis an cód chun an liathróid a tharraingt lenár ríomhchlár. Athróimid dath an pinn go gorm agus bainfimid úsáid as an gníomh ciorcal_lán chun an liathróid a tharraingt.

gníomh tarraing_stáitse() {
    >-- Glan an stáitse
    glan@stáitse()

    >-- Úsáid peann dearg
    dath@stáitse("dearg")

    >-- Tarraing an slacán
    dron_lán@stáitse(x_slacáin, y_slacáin, lthd_slacáin, airde_slacáin)

    >-- Úsáid peann gorm
    dath@stáitse("gorm")

    >-- Tarraing an liathróid
    ciorcal_lán@stáitse(x_liathróide, y_liathróide, ga_liathróide)
}

Bog an Liathróid

Ba mhaith linn go mbogfadh an liathróid: Cruthaímis gníomh nua bog_liathróid agus glaoimis air inár lúb tarraingthe. Sa ghníomh seo, ba chóir dúinn an liathróid a bhogadh, go háirithe dx_liathróide sa treo x, agus dy_liathróide sa treo y.

gníomh bog_liathróid() {
    x_liathróide += dx_liathróide
    y_liathróide += dy_liathróide
}

...

nuair-a fíor {
    >-- Glaoigh ar an gníomh tarraing_stáitse.
    tarraing_stáitse()

    >-- Bog an liathróid
    bog_liathróid()

    >-- Codail ar feadh cúple milleasoicind.
    codladh(10)
}

Rith an cód atá againn faoi láthair:

Ní bhuaileann an liathróid agus an slacán

A thiarcais! Téann an liathróid díreach tríd an slacán! Déanann sé sin mar ní scríobhamar aon loighic faoi cad a tharlaíonn nuair a bhuaileann an slacán agus an liathróid le chéile, nó nuair a bhuaileann an liathróid imill na stáitse. Déanaimis é sin anois.

Preab de na ballaí

Chun loighic preibe a chruthú, ba chóir dúinn ár gníomh bog_liathróid a athrú. Sa ghníomh sin ba chóir dúinn seic a dhéanamh an bhfuil an liathróid ag dul thar ballaí an stáitse, agus má tá sé ba chóir dúinn é a chasadh timpeall.

Mar shampla, má bheidh an x-comhordanáid níos lú ná 0, beidh sé imithe thar an balla chlé, dá bhrí sin ba chóir dúinn é a chasadh timpeall sa treo x. Mar an gcéanna má bheidh an x-comhordanáid níos mó ná fad_x@stáitse ba chóir dúinn an liathróid a chasadh timpeall agus má bheidh an y-comhordanáid níos lú ná 0 ba chóir dúinn an liathróid a chasadh timpeall sa treo y.

Seo é ar gcód faoi láthair:

gníomh bog_liathróid() {
    x_liathróide += dx_liathróide
    y_liathróide += dy_liathróide
}

Cruthaímis 2 athróg nua inár gníomh: x_tuartha agus y_tuartha. Bainfimid úsáid astu chun suíomh na liathróide atá tuartha a stóráil, ansin is linn iad a úsáid chun seic a dhéanamh an mbeidh an liathróid thar imill na stáitse. Seo é ár gcód nua, ní dhéanann sé aon rud difriúil ach tá spás ann chun seiceanna a dhéanamh níos déanaí.

gníomh bog_liathróid() {
    >-- Cá bhfuil an liathróid ag dul?
    x_tuartha := x_liathróide + dx_liathróide
    y_tuartha := y_liathróide + dy_liathróide

    >-- Déanfaimid ár seiceanna anseo

    >-- Tar éis na seiceanna, úasdátaigh áit na liathróide.
    x_liathróide += dx_liathróide
    y_liathróide += dy_liathróide
}

Anois tá sé in am tosú ag scríobh ár loighic preibe. Chun an liathróid a chasadh timpeall sa treo x, níl le déanamh againn ach an luach dx_liathróide a athrú go diúltach. Mar an gcéanna, chun an liathróid a chasadh timpeall sa treo y, athraímid dy_liathróide go -dy_liathróide.

Má tá an liathróid ar tí dul thar bun an stáitse, tá an cluiche thart. Is féidir linn an gníomh stop() a úsáid chun an ríomhchlár a stopadh.

Seo an cód chun é sin a dhéanamh:

gníomh bog_liathróid() {
    >-- Cá bhfuil an liathróid ag dul?
    x_tuartha := x_liathróide + dx_liathróide
    y_tuartha := y_liathróide + dy_liathróide

    >-- Déanfaimid ár seiceanna anseo

     x_tuartha < 0 {
        >-- Beidh an liathróid thar an taobh chlé.
        >-- Cas an liathróid timpeall sa treo x.
        dx_liathróide = -dx_liathróide
    }
     x_tuartha > fad_x@stáitse {
        >-- Beidh an liathróid thar an taobh dheis.
        >-- Cas an liathróid timpeall sa treo x.
        dx_liathróide = -dx_liathróide
    }
     y_tuartha < 0 {
        >-- Beidh an liathróid thar barr an stáitse.
        >-- Cas an liathróid timpeall sa treo y.
        dy_liathróide = -dy_liathróide
    }
     y_tuartha > fad_y@stáitse {
        >-- Tá an liathróid ag dul thar bun an stáitse.
        >-- Tá an cluiche thart.
        scríobh("CLUICHE THART")
        stop()
    }

    >-- Tar éis na seiceanna, úasdátaigh áit na liathróide.
    x_liathróide += dx_liathróide
    y_liathróide += dy_liathróide
}

Preab den slacán

Anois preabann an liathróid de na ballaí, ach fós téann sé díreach tríd an slacán. Nuair a théann an liathróid síos go dtí leibhéal an tslacáin, is féidir linn seic breise a dhéanamh an bhfuil an slacán faoin liathróid, agus má tá sé casfaimid an liathróid timpeall díreach mar a dhéanaimid nuair a bhuaileann sé imill an stáitse.

Chun seic a dhéanamh an bhfuil an slacán faoin liathróid, is féidir linn seiceáil an bhfuil lár an liathróid (x_tuartha) idir x_slacáin agus x_slacáin + lthd_slacáin.

gníomh bog_liathróid() {
    >-- Cá bhfuil an liathróid ag dul?
    x_tuartha := x_liathróide + dx_liathróide
    y_tuartha := y_liathróide + dy_liathróide

    >-- Déanfaimid ár seiceanna anseo

     x_tuartha < 0 {
        >-- Beidh an liathróid thar an taobh chlé.
        >-- Cas an liathróid timpeall sa treo x.
        dx_liathróide = -dx_liathróide
    }
     x_tuartha > fad_x@stáitse {
        >-- Beidh an liathróid thar an taobh dheis.
        >-- Cas an liathróid timpeall sa treo x.
        dx_liathróide = -dx_liathróide
    }
     y_tuartha < 0 {
        >-- Beidh an liathróid thar barr an stáitse.
        >-- Cas an liathróid timpeall sa treo y.
        dy_liathróide = -dy_liathróide
    }
     y_tuartha > fad_y@stáitse {
        >-- Tá an liathróid ag dul thar bun an stáitse.
        >-- Tá an cluiche thart.
        scríobh("CLUICHE THART")
        stop()
    }

     y_tuartha > y_slacáin {
        >-- Tá an liathróid ag leibhéal an tslacáin.
        >-- Déan seic an bhfuil an slacán faoin liathróid?
         x_slacáin <= x_tuartha & x_tuartha <= x_slacáin + lthd_slacáin {
            dy_liathróide = -dy_liathróide
        }
    }

    >-- Tar éis na seiceanna, úasdátaigh áit na liathróide.
    x_liathróide += dx_liathróide
    y_liathróide += dy_liathróide
}

Bain triail as!

Oibrionn Sé!

Oibríonn Sé! Preabann an liathróid de na ballaí agus an slacán, ach críochnaíonn an cluiche má théann sé thar bun an stáitse.

Dúshlán

Seo cúpla smaointe a d’fhéadaimis a úsáid chun ár gcluiche a fheabhsú:

  • Athraigh an ríomhchlár ionas go bhfuil scór ag an imreoir. Méadaigh an scór gach uair a bhuaileann an liathróid leis an slacán, agus ag deireadh an chluiche scríobh an scór ar an gconsól.
  • Cruthaigh córas saolta: tosaíonn an t-imreoir le méid saolta agus gach uair a chailleann sé an liathróid cailleann sé saol amháin.
  • Anois úsáidimid lár an liathróid chun na seiceanna a dhéanamh an bhfuil an liathróid [[ar tí|about to]] bualadh leis na ballaí nó an slacán. Oibríonn sé seo ach níl sé foirfe, nuair a bhuaileann an liathróid an slacán, téann píosaí móra den liathróid tríd an slacán sula mbuaileann lár an liathróid an slacán. Athraigh an cód ionas go úsáideann sé ga na liathróide chun seic a dhéanamh an bhfuil imeall na liathróide ag bualadh leis na ballaí nó an slacán in ionad an lár.