La langue de Multi-Plateforme pour des calculatrices d'instruction = 0 = Tableau du contense 1 : Introduction 2 : Matriel et Compatiblity 3 : Normes De Programmation 4 : Begining MLC 5 : Dessin de 6 : Maths 7 : Variables 8 : Un Programme Simple 9 : Sprites En dtail 10 : Un Programme D'chantillon 11 : Conclusion = 1 = [ introduction ] a` ce jour vous devriez avoir dja` lu le MLC Readme et la documentation individuelle pour votre modle de calculatrice, de sorte que ne soit pas couvert ici. Ce cours d'instruction vous prendra par les tapes de faire un jeu simple de MLC et prsentera a` vous certains des concepts plus avans derrie`re le MLC (cependant, a` l'heure actuelle avec le MLC tant si nouveau, beaucoup de tours et techniques seront undoubtably discoved le temps fini que nous n'avons jamais imagin). = 2 = [ matriel et Compatiblity ] avant que vous commenciez me^me a` programmer la` est quelque chose que vous devez savoir et employer en programmant le MLC. Puisque le MLC est par defintion une langue de multi-plateforme (pensez que Java) vos jeux sera couru sur des calculatrices beaucoup diffrent de vos propres, par exemple, si vous avez un Casio AFX puis votre taille d'cran est 128x64, mais si vous avez un ti-83 votre taille d'cran est 96x64. Su^rement vous voyez un proble`me ici... La solution est pour que le programmeur n'emploie a` bon escient pas le secteur de l'cran non vident sur d'autres calcs pour n'importe quoi essentiel pour gameplay, je sugge`re en utilisant si pour montrer des points, stat, etc. quelque chose qui n'est pas exig pour jouer (et le sould de ces choses semblent galement quelque part d'autre, comme un menu de pause ou quand vous matrice). En outre, sur quelques calcs il y a des restrictions a` la quantit de la mmoire MLC peut employer, etc..... ainsi afin de garder votre sjour compatible de jeu dans ces directives : 1 : volume de fichier MAXIMUM de 9.2 KBS 2 : Moins de 55 variables (de tout type) 3 : Moins de 60 fonctions Dans presque tous les cas ce simplement ne sera pas un proble`me mais le maintiendra dans l'esprit. Vous pouvez e^tre pense "Why si je rends mes jeux compatibles au cou^t de space?" d'cran ;, jaillissent la rponse est de sorte que d'autres avec des calcs avec de plus grands crans que le vtre fassent la me^me chose pour vous, et naturellement de sorte qu'autant de personnes que possibles puissent jouer votre jeu. Je sais naturellement que dans certains cas ce juste ne sera pas possible, et les thats bien, l'essai juste votre meilleur et lui seront bons. = 3 = [ des normes de programmation ] des normes de programmation sont des re`gles qui tout le folow de programmeurs pour une langue afin d'obtenir les la plupart hors de cette langue, les re`gles ne sont pas inforced de sorte qu'elles puissent e^tre casses comme ncessaires, mais pour les casser sans bonne raison est considr une mauvaise pratique. Voici les normes de programmation pour MLC, vous devraient adhrer a` elles autant que possibles. 1 : Compatibilit 2 De Conserve : Employez la fonction PRINCIPALE pour appeler les fonctions qui vous courent programme, et pas comme majeure partie de votre programme. 3 : Rendez les fonctions aussi rutilisables que possible et comme l'art de l'auto-portrait a contenu comme possible = 4 = [ Begining MLC ] si vous savez un peu de C entrant dans le MLC puis vous devraient avoir des proble`mes tre`s petits, mais si le MLC est votre premie`re langue ou si votre commutation de BASIC alors vous pre^te une attention particulie`re. - structure de MLC - il y a 3 commands/areas spciaux dans n'importe quel programme de MLC au wich les re`gles que diffrent appliquent que toute autre chose dans le MLC, ici elles sont : MLC : "MLC:" ; doit e^tre plac au dessus de tous les programmes de MLC, ceci est fait de sorte que l'interperater de MLC puisse rapidement indiquer si le programme est un programme de MLC et devrait e^tre numr dans la liste de programme. # DONNES ... # DEND La section de donnes est un secteur spcial lequel est regard avant que le jeu commence, il contiendra toutes vos cartes binaires et posibly quelques autres donnes que votre programme pourrait avoir besoin de ceci peuvent e^tre places n'importe ou` en votre code. # FORCE DE FNCT la fonction PRINCIPALE est l'endroit ou` votre jeu commencera, n'importe ou` il est dans le programme, votre jeu ne peut pas e^tre withouth couru par fonction PRINCIPALE. = 5 = [ dessinant ] si le BASIC jamais utilis de youve vous savent ce qu'est une douleur norme il pour dessiner un cran complexe, avec chaque ligne prouvant vers le haut... de bon un par un que n'est plus un proble`me avec le MLC :) Le MLC emploie le double amortissement, les moyens de sorcie`re essentiellement qu'il utilise deux crans, un est l'cran qui est montr visiblement sur votre CALC, et l'autre est ou` tout le MLC dessinant des commandes prend l'endroit quand votre schma fait vous peut forcer l'cran invisible pour e^tre copi a` l'vident, faisant tout apparat immdiatement. Exemple : MLC : # 1 DE 3 DE 10 DE 10 DE 0 DE 0 DE FORCE # DE CLRS # DE RECT DE FNCT # 1 DE 3 DE 20 DE 20 DE 10 DE 10 DE RECT # 1 DE 3 DE 30 DE 30 DE 20 DE 20 DE RECT # 1 DE 3 DE 40 DE 40 DE 30 DE 30 DE RECT # 1 DE 3 DE 50 DE 50 DE 40 DE 40 DE RECT # 1 # ASPIRATION # PAUS DE 3 DE 60 DE 60 DE 50 DE 50 DE RECT dans l'exemple ci-dessus aucun des rectangles n'est montr que l'untill # commande d'ASPIRATION est excut, ni est l'cran dgag par # CLRS (# CLRS dgage rellement l'cran invisible, pas l'vident) en plus du double amortissement rappelez-vous que le MLC emploie 4 niveaux de couleur, dans lesquels est montr # argument de RECT's 5e`me et 6e`me. le 0 = le blanc et le 3 est noir et le 4 est inverti (et dans le cas du 5 de RECT n'est aucun Fill/Transparent) Le schma est une partie de MLC tre`s importante et vous familarize avec elle et toutes ses commandes avant la marche a` suivre. = 6 = [ des opperations de maths de maths ] dans le MLC sont considrablement diffrent qu'en BASIC, parce que une chose la` n'est aucun ordre des oprations. En outre, tous les nombres dans le MLC sont des intergers, ainsi 1.98 dans le MLC est juste 1 (ou rellement 1 dans le sentax de MLC). Exemple : dans le MLC : 1+.2*.3=.9 avec un ordre des oprations il serait : 1+.2*.3=.7 maintenez cela dans l'esprit quand votre faire tous les opperations mathimatical. Des maths dans le MLC sont dpouilles vers le bas a` ses bases nues, puisque le MLC est de jeu de langue un shouldnt la` soit un grand besoin d'opperations mathmatical avans, et s'il y a vous pouvez devoir trouver un workaround. Notez en outre (si vous havent dja`) qui tous les nombres dans le MLC doivent e^tre preceaded par a. (priode). = 7 = [ des variables ] correct, pour commencer avec im aller supposer que vous savez ce qu'est une variable, si vous pas puis vous devriez jouer probablement autour avec le BASIC pendant un moment avant de commencer sur le MLC. Il y a 6 types de variables dans le MLC, et le tout a leurs propres qwirks et dispositifs : 1 : Nombres entiers 2 : Cordes 3 : Cartes binaires 4 : Sprites 5 : Ranges 6 : Indicateurs (pas encore soutenus) Toutes les variables ont leur propre type de caracte`re simple prfixe, comme numr ci-dessous : 1 : Nombres entiers - ces variables contiennent des nombres sur la sorcie`re que vous pouvez prformer des oprations mathmatical. Prfixe : % d'exemple : %INT=.1 2 : Cordes - ceux-ci contiennent un choix de caracte`res, vous peuvent employer des cordes pour diffrents opperations. Prfixe : exemple de $ : # ; 3 : Cartes binaires - ces d'arnt variables vraies exactement, ils sont mearly des noms pour des cartes binaires dfinies dans la section de donnes, vous ne peuvent pas les changer. Prfixe : [ exemple : # BITM [ BMP 8 00000000 00000000 FFFFFFFF 4 : Sprites - le type variable le plus divers, sprites contiennent rellement une carte binaire et plusieurs ints. Prfixe : ^ exemple : # SPRT ^SPR [ BMP ^SPR.X=.10 ^SPR.Y=.10 ^SPR.DX=.0 ^SPR.DY=.0 ^SPR.VX=.0 ^SPR.VY=.0 5 : Ranges - les ranges peuvent actuellement seulement contenir des ints mais a` l'avenir j'espe`re les augmenter au moins aux cordes et aux indicateurs. Prfixe : @ exemple : # 5 @LIST(.0)=.1 @LIST(.1)=.2 @LIST(.2)=.3 @LIST(.3)=.4 @LIST(.4)=.5 d'ARRY @LIST = 8 = [ un programme simple ] correct, maintenant que vous savez les fondations we're allant passer par les tapes de faire un programme de MLC, ce programme s'appelleront le "tenir le premier rle" ; et vous donnera une bonne ide de ce que le MLC peut faire. Des commentaires sont montrs avec//, ils ne doivent pas e^tre inclus dans le programme d'actuall. //Begin votre programme avec le sentax requis MLC : # FNCT le programme que PRINCIPAL de //the commencera ici %tenir le premier rle=.100 //we pour vouloir avoir 100 tient le premier rle sur l'cran %SCRN=.94 //im en utilisant cette variable de sorte que je puisse changer la largeur de l'cran facilement # FRUN TIENNE LE PREMIER RLE //calls la fonction TIENT LE PREMIER RLE # la BOUCLE //calls de FRUN la BOUCLE de fonction # DFENDENT //ends la fonction principale, en accord avec les normes we've de MLC mises le moins possible dedans ici. # dbut de la BOUCLE //the de FNCT -1 //shift de 1 de fonction de BOUCLE # de DCALAGE de 0 l'cran (invisible) en bas d'un Pixel, faisant une boucle tous les Pixel qui vont outre de l'cran au ct d'oppisite. # l'ASPIRATION //show les changements a` l'cran # au FGOB //go a` begining de la fonction # DFENDENT //end de BOUCLE de fonction, dans ce cas-ci il n'est jamais atteinte # FNCT TIENT LE PREMIER RLE le dbut de //the de la fonction TIENT LE PREMIER RLE # le 0 %SCRN %X //finds de RNDM un postion alatoire de X n'importe ou` sur l'cran. # 64 %Y //finds de 0 de RNDM un postion alatoire de Y n'importe ou` sur l'cran. # 3 //places de PIXL %X %Y que un Pixel noir a` X,Y %tenir le premier rle=%tenir le premier rle-.1 //subtracts 1 de TIENNENT LE PREMIER RLE # IIFF %tenir le premier rle!.0 //checks pour voir si TENEZ LE PREMIER RLE n'est pas gal a` 0 # FGOB //if TIENNENT LE PREMIER RLE n'est pas 0 puis les rptitions de fonction # DFENDENT //ends la fonction et la commande revient a` la FORCE huh simple preaty ? = 9 = [ Sprites en dtail ] Sprites beaucoup diffrent de l'autre variable, et pas simplement parce qu'elles sont rellement plusieurs les vars groups. Par exemple, on pourrait dire des sprites pour se dplacer sur leurs propres, et ils ont limit les opperations de virgule flottante, heres par point par le dtail de point de quel les proprits de sprites : BMP : La carte binaire le sprite emploie X : x Du Sprite sur l'cran Y : y Du Sprite sur l'cran DX : simulaient les opperations de virgule flottante, DX reprsente une valeur entre 100 et -100, vous pouvez incrmenter ou le dcrmenter autant que vous voulez et chaque fois il dpasse ses limites que X sera incrment ou dcrment. DY : simulaient les opperations de virgule flottante, DY reprsente une valeur entre 100 et -100, vous pouvez incrmenter ou le dcrmenter autant que vous voulez et chaque fois il dpasse ses limites que Y sera incrment ou dcrment. VX : est la vitesse du sprite horizontalement, chaque fois que # on dplacera la DISP (nom de sprite) est excute le sprite qui beaucoup horizontalement (en utilisant X et DX) avant d'e^tre montr. VY : est la vitesse du sprite vertially, chaque fois que # on dplacera la DISP (nom de sprite) est excute le sprite qui beaucoup verticalement (en utilisant Y et DY) avant d'e^tre montr. ainsi par exemple, une balle pourrait e^tre donne une valeur de VY de -100 et elle dplacerait 1 Pixel vers le haut chaque fois que on lui a montr. la proprit de BMP pourrait potentiellement e^tre employe pour animer un sprite, si vous commutez hors de son BMP chaque une fois et d'un moment ou` vous pouvez changer le regard du sprite sans devoir faire un neuf, etc..... DX et DY sont prvus vous ont laiss dplacer un sprite lentement a` travers l'cran, non 1 Pixel a` la fois, mais jusqu'au 1/100th d'un Pixel a` la fois, tenant compte de l'acclration et de transitioning plus sans heurt. si vous voulez, vous pouvez facilement ignorer toutes les proprits de sprite acceptez le X et le Y sans l'effet d'i'll. = 10 = [ un programme d'chantillon ] a` ce jour espoir de I que vous avez un meilleur arrangement de la faon dont le MLC fonctionne, ce programme est une version augmente de ce qui prce`de TIENT LE PREMIER RLE le programme, en utilisant les cartes binaires et l'utilisateur entrs : //Begin votre programme avec le sentax requis MLC : # FNCT le programme que PRINCIPAL de //the commencera ici %tenir le premier rle=.50 //we pour vouloir avoir 50 tient le premier rle sur l'cran %SCRN=.94 //im en utilisant cette variable de sorte que je puisse changer la largeur de l'cran facilement # FRUN TIENNE LE PREMIER RLE //calls la fonction TIENT LE PREMIER RLE # la BOUCLE //calls de FRUN la BOUCLE de fonction # DFENDENT //ends la fonction principale, en accord avec les normes we've de MLC mises le moins possible dedans ici. # dbut de la BOUCLE //the de FNCT -1 //shift de 1 de fonction de BOUCLE # de DCALAGE de 0 l'cran (invisible) en bas d'un Pixel, faisant une boucle tous les Pixel qui vont outre de l'cran au ct d'oppisite. # l'ASPIRATION //show les changements a` l'cran # au 24 %KLF //detect de GKEY si la touche de dplacement du curseur gauche est serre # le 26 %KRG //detect de GKEY si la bonne touche de dplacement du curseur est serre # IIFF %KLF=.1 //if a` gauche est serre... # le -1 //scroll de 0 de -1 de SHFT le Pixel de l'cran 1 laiss # IIFF %KRG=.1 //if droit est serr... # le -1 //scroll de 0 de 1 de SHFT le Pixel de l'cran 1 droit # FGOB //go a` begining de la fonction # DFENDENT //end de BOUCLE de fonction, dans ce cas-ci il n'est jamais atteint # FNCT TIENT LE PREMIER RLE le dbut de //the de la fonction TIENT LE PREMIER RLE # le 0 %SCRN %X //finds de RNDM un postion alatoire de X n'importe ou` sur l'cran. # 64 %Y //finds de 0 de RNDM un postion alatoire de Y n'importe ou` sur l'cran. # DBMP [ POINT %X %Y //places que le POINT a` mmoire d'image a` X,Y %tenir le premier rle=%tenir le premier rle-.1 //subtracts 1 de TIENNENT LE PREMIER RLE # IIFF %tenir le premier rle!.0 //checks pour voir si TENEZ LE PREMIER RLE n'est pas gal a` 0 # FGOB //if TIENNENT LE PREMIER RLE n'est pas 0 puis les rptitions de fonction # DFENDENT //ends la fonction et la commande revient a` la FORCE # la section de donnes des DONNES //the contient toutes les cartes binaires que votre programme emploiera # BITM [ le POINT 8 //creats le POINT a` mmoire d'image avec une taille des donnes # du DEND //end des donnes BF1FBFFFFFFFFFFF //bitmap des donnes 40E04000000 //bitmap de 8x8 040000000 //bitmap des donnes sectionnent = 11 = [ conclusion ] ce qui prce`de n'est pas certinely tout le MLC peuvent faire, pas me^me troitement en fait, mais si vous lisez le readme et l'autre documentation que vous devriez allez bien, apre`s tout, exprimentation est la meilleure manie`re d'apprendre. I'll ajoute probablement plus a` ceci pendant que le temps continue et certaines des personnes de proble`mes taient venues a` mon attention. si vous avez un proble`me, la sensation librement pour me demander, mon E-mail est crimsoncasio@casiocalc.org et je peux galement e^tre accd par des poteaux sur tout nombre de forum. si votre question est bonne je pourrais me^me la travailler dans le cours d'instruction ;) J'espe`re que vous avez plaisir a` travailler avec le MLC ;) CrimsonCasio, Studios De Programmation piques.