Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 Funksjoner og funksjonsblokk - movement programmet

Funksjonsblokk - visualisering

moveFromCoord funksjonen tar de to første tallene/bokstavene fra sjakkbevegelsesnotasjonen i formatet "h8h4", og gir ut et korresponderende koordinat for roboten som er lagret i en array.









moveToCoord var satt opp på akkurat samme måte som funksjonen over, men at den tar de to siste verdiene fra formatet "h8h4". På denne måten kan den ene kalles i en sekvensblokk for robotbevegelsen fra der brikken skal beveges og den andre til koordinatene den skal beveges til.

Inputs og output til moveFromCoord og moveToCoord har disse input-/output- og funksjonsvariabler:


Den siste funksjonen i hovedkoden var pieceHeight som brukes for å finne riktige z-koordinater for roboten, ut ifra hvilke brikker som skal flyttes. En brikke type blir satt som input, og den får en output av korresponderende høyde fra en array med brikkehøyder. En array med brikkenavn har samme indeks som hver brikkes høyde.

capturePlace var funksjonsblokken som lagret hvilke brikker som har blitt tatt. Denne ble implementert etter at hovedprogrammet viste at det kunne bevege delene. Ettersom det ikke var noen plass å legge brikkene fra capture sekvensen, måtte roboten ha en plass å lagre verdiene.

Funksjonsblokken over ble initalisert i ST men vises her med inputs og outputs. Denne returnerer posisjonen til brikketypen ut ifra en fast designert plass til hver type på siden av brettet, se brettet. Den lagrer hvilke plasser som er fylt opp og sender ut lokasjonen på brikkene ut ifra typen, dersom plassen skal bli tømt eller fylt men en brikke. Place og take inputs blir brukt til å gi angi om piecePos skal gi ut en fylt  posisjon eller en tom en.

Måten den blir satt opp, var ved hjelp av to-dimensjonale arrays, som er beskrevet i CODESYS dokumentasjon. De blir brukt til å skape to matriser på . En for BOOL verdier, for å lagre om plassen er opptatt, og en for strings, som lagrer hvilken type brikke plassen er designert til.

Funksjon blokk

Målet med dette programmet er å lage et sjakkspill som kan flytte sjakkbrikkene fra posisjoner til posisjoner på sjakkbrettet samt oppdatere disse posisjonene når brikkene flyttes koden inneholder:


  • FromPos: Denne koden setter opp startposisjonene til de hvite og svarte brikkene

  • PosName og PosNumber: Denne koden definerer brettets koordinater med bokstaver (a-h) og tall (1-8) som tilsvarer kolonner og rader på sjakkbrettet.


  • PiecePos: Denne koden er for å kombinere posisjonsnavn og tall for hver brikke på brettet.

  • FromPos[WselectedX, WselectedY] og FromPos[bselectedX, bselectedY]: Denne koden
    er for sjekker om det er en hvit og en svart brikke ved valgt startposisjon
  • FromPos[WTargetX, WTargetY] og ToPos[bTargetX, bTargetY]: Denne koden flytter brikke til sluttposisjon.
  • WhitePiecePos og BlackPiecePos: Denne koden er oppdatert med en kombinert streng som representerer bevegelsen fra startposisjon til sluttposisjon.

  • UpdatedPiecePos: Denne koden oppdaterer brettet til å vise brikkenes nye plassering etter en brikke er flyttet.

Under viser til slutt ble det brukt en funksjonsblokk med 8 input og 2 output for å kunne flytte brikker fra posisjon til posisjon.

Disse variablene som trengs for å flytte de hvite og svarte brikkene fra startposisjonen til sluttposisjonen er vist. Bevegelsen fungerer når vi velger hvilken brikke vi vil flytte. I denne figuren har vi bestemt oss for å flytte den hvite knight fra b1 til c3, så WselectedX er 1, WselectedY er 0, WTargetX er 2 og WTargetY er 2. For den svarte brikken har vi bestemt oss for å flytte den svarte pawn fra d7 til d6. så bSelectedX er 3, bSelectedY er 6, bTargetX er 3 og bTargetY er 5.


Visualisering

På bilde under viser tre forskjellige tabell:

Den første tabellen merket "FromPos" representere den startposisjoner til sjakkbrikkene på brettet. Denne tabellen viser hvor hver brikke er plassert før et trekk gjøres. Brikkene er plassert i standard startposisjoner for et sjakkspill. Både store og små bokstaver brukes for å skille mellom hvit og svart brikkene. De hvite brikkene representeres av store bokstaver, mens de svarte brikkene representeres av små bokstaver.

Den andre tabellen merket "ToPos" den nye posisjonen til sjakkbrikkene etter at et trekk er gjort. Denne tabellen viser hvordan brikkene vil være plassert på brettet etter at trekket er utført. 

Den siste tabellen merket "UpdatedPiecePos" representere den kombinerte og oppdaterte posisjonen til alle sjakkbrikkene etter å ha trekkene Fra "FromPos" til "ToPos". Den gir komplett oversikt over sjakkbrettet etter at trekkene er utført.

Tekstfeltene merket "WhitePiecePos" og "BlackPiecePos" viser fra og til posisjoner for hvite og svarte brikker.


Image Added

På figure viser ut at to brikker ble flyttet, en og en svart. Den hvite brikken representert med bokstaver N (knight). ble flyttet fra b1 i "FromPos" til c3 i "ToPos", og den svarte brikken, representert med bokstaven p (pawn), ble flyttet fra d7 i "FromPos" til d6 i "ToPos".

etter det vil "UpdatedPiecePos" tabellen vise brettet etter at trekket er fullført. Den viser brettet slik den ser ut etter at de trekkene er gjort, og kombinerer informasjon fra "From Pos" og "ToPos". Dette gir en enkel oversikt over hvor alle brikkene er plassert på brettet etter de utførte trekkene.