Am Péinteála

An Luch

Ar an leathanach roimhe seo chonaiceamar conas an méarchlár a úsáid inár ríomhchláir, mar a shamhlófá is féidir linn an luch a úsáid inár ríomhchláir freisin! Anois cruthaímis ríomhchlár ar féidir linn a úsáid chun pictiúir a tharraingt leis an luch.

Ag Péinteáil

Na Teagmhais

Tá 3 saghas teagmhas luiche i Setanta. Is féidir linn éisteacht le haghaidh “luch síos”, “luch suas” agus “bogadh luiche”:

Is é an cnaipe luiche chlé atá i gceist i gcónaí ar an leathanach seo, ní úsáidtear an cnaipe deas.

  • Luch Síos: Tarlaíonn an teagmhas seo nuair chliceálann an úsáideoir a luch ar an stáitse.
  • Luch Suas: Tarlaíonn an teagmhas seo nuair a stopann an úsáideoir an luch a chliceáil.
  • Bogadh Luiche: Tarlaíonn an teagmhas seo nuair a bhogann an úsáideoir an luch ó áit go háit ar an stáitse.

Tá 3 ghníomh difriúla ag Setanta chun éisteacht leis na teagmhais sin. Oibríonn na gníomhartha sin mar a oibríonn an gníomh méarchlár a chonaiceamar cheana.

An Straitéis

Inár ríomhchlár éistfimid le haghaidh an teagmhas “luch síos” chun líne nua a thosú, ansin éistfimid le haghaidh “bogadh luiche” chun slí an líne a shainmhíniú. Nuair a tharlaíonn an teagmhas “luch suas”, stopaimid an líne a tharraingt.

An Lucht Éisteachta

Anois cruthaímis 3 ghníomh nua: éist_síos, éist_suas agus éist_bog. Níos déanaí athróimid an ríomhchlár ionas go glaofar ar éist_síos nuair a tharlaíonn an teagmhas “luch síos”, glaofar ar éist_suas nuair a tharlaíonn an teagmhas “luch suas” agus éist_bog nuair a tharlaíonn an teagmhas “bogadh luiche”.

Glacann gach ceann le 2 argóint: x agus y. Beidh comhordanáidí na teagmhais stóráilte sna hathróga sin.

gníomh éist_síos(x, y) {
    >-- Cód le dhéanamh nuair a chliceálann an usáideoir an luch
}

gníomh éist_suas(x, y) {
    >-- Cód le dhéanamh nuair a scaoileann an úsáideoir an luch.
}

gníomh éist_bog(x, y) {
    >-- Cód le dhéanamh nuair a bhogann an luch.
}

Chun na gníomhartha seo a nascadh leis an luch, is féidir linn luch@stáitse, luch_suas@stáitse agus luch_bog@stáitse a úsáid. Ba chóir dúinn glaoch ar na gníomhartha sin lenár gníomhartha éist_síos, éist_suas agus éist_bog chun an nasc a chruthú (díreach mar a rinneamar leis an gníomh méarchlár).

gníomh éist_síos(x, y) {
    >-- Cód le dhéanamh nuair a chliceálann an usáideoir an luch
}

gníomh éist_suas(x, y) {
    >-- Cód le dhéanamh nuair a scaoileann an úsáideoir an luch.
}

gníomh éist_bog(x, y) {
    >-- Cód le dhéanamh nuair a bhogann an luch.
}

luch@stáitse(éist_síos)
luch_suas@stáitse(éist_suas)
luch_bog@stáitse(éist_bog)

Bain triail as

Chun tástáil a dhéanamh ar an gcód sin, cuirimis píosa cód beag sa gníomh éist_síos chun ciorcal a tharraingt ar an stáitse nuair a cliceáiltear an luch ar an stáitse. Tá an x agus y comhordanáid ar fáil sa ghníomh éist_síos, mar sin bainfimid úsáid astu le haghaidh lár an ciorcail.

Bain triail as:

Ní oibríonn sé!

Níor tharla aon rud! Cén fáth?

An Fhadhb

Féach go cúramach ar an cnaipe nuair a thosaíonn tú an ríomhchlár sin. Ní athraíonn sé go cnaipe riamh, ach sin cad a tharla nuair a ritheann tú an cluiche ar an leathanach roimhe seo.

Ní athraíonn sé go cnaipe mar tosaíonn an ríomhchlár ach críochnaíonn sé beagnach láithreach. Cén fáth?

Smaoinigh anois faoi cad a tharlaíonn nuair a ritear an ríomhchlár sin.

  1. Tosaíonn an léirmhínitheoir ag barr an ríomhchláir. Is é an sainmhíniú den gníomh éist_síos an chead rud a léann sé. Dá bhrí sin cruthaíonn sé an gníomh agus cuireann sé é san athróg éist_síos.
  2. Ansin, déanann sé an rud céanna leis an gníomh éist_suas agus an gníomh éist_bog.
  3. Is é an líne luch@stáitse(éist_síos) an chéad líne eile a léann sé, dá bhrí sin nascann sé an gníomh éist_síos leis an teagmhas “luch síos”.
  4. Mar an gcéanna, nascann sé éist_suas agus éist_bog leis an luch freisin.
  5. Áfach, anois sroicheann an léirmhínitheoir deireadh an ríomhchláir agus níl aon rud le dhéanamh aige.
  6. Mar sin stopann sé: tá an ríomhchlár críochnaithe.

Sin cúis an easpa ciorcail nuair a cliceálaimid ar an stáitse: Níl an ríomhchlár ag rith níos mó. Ba chóir dúinn rud a dhéanamh chun an ríomhchlár a choimeád beo.

An Réiteach

Ba mhaith linn an ríomhchlár a choimeád ag rith go dtí go brúnn an úsáideoir an cnaipe . Is féidir linn an gníomh fan a úsáid chun é sin a dhéanamh. Nuair a ritheann Setanta an gníomh fan, fanann sé go dtí go brúitear an cnaipe . Tá sé cosúil le glaoch ar codladh le méid ama an-mhór (nó méid éigríochta).

Cuirimis fan() ag deireadh ár ríomhchlár agus bainimis triail as arís:

Oibríonn sé anois!

An Bhfuil Sé Brúite?

Anois ba chóir dúinn smaoineamh faoi conas is féidir linn seic a dhéanamh an bhfuil an luch brúite? Ba mhaith linn líne a tharraingt nuair atá sé brúite, agus níor mhaith linn mura bhfuil.

Is féidir linn na teagmhais “luch síos” agus “luch suas” a úsáid chun an coinníoll sin a ríomh: Nuair a faighimid teagmhas “luch síos” tá an luch brúite, agus beidh sé fós brúite go dtí go faighimid teagmhas “luch suas”.

Cruthaímis athróg nua brúite ag barr an ríomhchláir leis an luach bréag. Nuair a ghlaoitear ar eist_síos ba chóir dúinn an luach a athrú go fíor mar anois tá an luch brúite, agus nuair a ghlaoitear ar éist_suas ba chóir dúinn é a athrú go bréag mar níl sé brúite a thuilleadh.

brúite := bréag

gníomh éist_síos(x, y) {
    brúite = fíor
}

gníomh éist_suas(x, y) {
    brúite = bréag
}

gníomh éist_bog(x, y) {
    >-- Cód le dhéanamh nuair a bhogann an luch.
}

luch@stáitse(éist_síos)
luch_suas@stáitse(éist_suas)
luch_bog@stáitse(éist_bog)

fan()

Anois cuirimis loighic nua sa ghníomh éist_bog chun ciorcal a tharraingt nuair a bhogann an luch agus é brúite chun tástáil a dhéanamh ar ár gcód.

Nuair a ghlaoitear ar éist_bogx agus y cothrom le áit nua na luiche.

Anois seo é éist_bog:

gníomh éist_bog(x, y) {
    má brúite {
        ciorcal@stáitse(x, y, 20)
    }
}

Bain triail as! Rith an ríomhchlár, coimeád do luch síos agus bog timpeall na stáitse é.

Líne ciorcail

Línte

Is aoibhinn liom na ciorcail, ach ní hiad atá uainn. Anois ba chóir dúinn línte a tharraingt in ionad na ciorcail.

Nuair a bhogann an luch agus glaoitear ar éist_bog is é x agus y an áit nua. Áfach, chun líne a tharraingt is gá dúinn cuimhneamh ar an áit a bhí an luch sular bhog sé mar teastaíonn an sean-áit agus an áit nua uainn.

Cruthaímis 2 athróg nua chun an sean x-comhordanáid agus an sean y-comhordanáid a stóráil, tugaimid x_roimhe agus y_roimhe orthu. Cuirimis na línte seo ag barr an ríomhchlár:

x_roimhe := 0
y_roimhe := 0

Gach uair a bhogann an luch (agus é brúite) tarraingeoimid líne ón sean áit ((x_roimhe, y_roimhe)) go dtí an áit nua ((x, y)), ansin cuirfimid an áit nua sna hathróga x_roimhe agus y_roimhe chun iad a stóráil go dtí an céad teagmhas “bogadh luiche” eile. Chun an líne a tharraingt, bainfimid úsáid as an gníomh líne@stáitse chun an líne a tharraingt. Glacann sé le 4 argóint: Is é an céad 2 argóint suíomh tús na líne, agus an dara 2 argóint suíomh deireadh na líne. Mar sín scríobhfaimid líne@stáitse(x_roimhe, y_roimhe, x, y) chun líne a tharraingt ón sean áit go dtí an áit nua.

Anois seo é ár gníomh éist_bog:

gníomh éist_bog(x, y) {
     brúite {
        líne@stáitse(x_roimhe, y_roimhe, x, y)
    }
    x_roimhe = x
    y_roimhe = y
}

Bain triail as!: