Operatørprioritering

Jeg begynte nylig å repetere og forfriske kunnskapen min i C. Da kom jeg over følgende tabell som viser operatørprioritet («operator precedence» på engelsk):

c-operators-precedence

Dette er den type kunnskap jeg aldri brydde meg noe særlig om. Fordi jeg alltid brukte mye paranteser og jeg pleide å bryte opp komplekse logikkuttrykk. Men, man bør vite litt om hvordan ulike operatører prioriteres likevel ..

Super Mario Bros bot – del 1

Tidligere i vår så jeg igjen et videoklipp av darbian som setter ny verdensrekord:

Dette er veldig imponerende, men så har han også holdt på i noen år. Han har uendelig mye mer tålmodighet enn det jeg har.

Jeg fikk uansett lyst til å prøve selv, men ikke å spille selv. For da er man dømt til å gjøre en eller annen feil underveis også må man starte på nytt igjen hver gang.

Løsningen måtte derfor bli å lage en bot (altså robot på engelsk), som kunne kjøre de samme instruksjonene igjen og igjen for hver spillverden, hvor man stadig tester nye instruksjoner og dermed får utnyttet tiden bedre. Til slutt kjører man alle fungerende instruksjoner etter hverandre, og vips så har man sin egen personlige og uslåelige rekord. 😀

Her er det midlertidige resultatet etter å ha holdt på noen timer hver dag i en uke:

(Videoen er sammensatt av flere klipp siden hver spillverden ble spilt hver for seg.)

Instruksjonene underveis er i sekunder. F.eks. blir «vent 0.4» til «vent 0.4 sekunder».

Jeg benyttet C++ i Dev-C++ på Windows. Fra her ordnet jeg både sending av egne genererte tastetrykk i tillegg til instruksjonene for Mario.

Valg av emulator viste seg å bli vanskelig. Først prøvde jeg Snes9x, men her ble det vanskelig å skrive instruksjoner som faktisk fungerte. Jeg fant så ut at darbian og alle andre som spiller mye uansett bruker NES. Dermed falt valget på Nestopia som fungerte bedre.

Jeg ble litt lei underveis så jeg vet ikke når jeg fullfører dette prosjektet.

Kildekode: http://www.bakkenblogg.no/diverse/smbb/1.cpp