// Sprite test1 // for V2.00 later only // Set graphics mode width(0) int wgx,wgy getWidth(wgx,wgy):// Get screen width by graphics mode locate(0,2):print "Graphic Width:";wgx;"*";wgy // sprite pattern (X68 type) dim char ptnA(255) = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0 ,0,0,2,0,2,0,2,0,0,2,0,2,0,2,0,0 ,0,0,0,3,0,3,0,3,3,0,3,0,3,0,0,0 ,0,1,2,0,4,0,0,4,4,0,0,4,0,2,1,0 ,0,0,0,3,0,5,0,5,5,0,5,0,3,0,0,0 ,0,0,2,0,0,0,6,0,0,6,0,0,0,2,0,0 ,0,1,0,3,4,5,0,7,7,0,5,4,3,0,1,0 ,0,1,0,3,4,5,0,7,7,0,5,4,3,0,1,0 ,0,0,2,0,0,0,6,0,0,6,0,0,0,2,0,0 ,0,0,0,3,0,5,0,5,5,0,5,0,3,0,0,0 ,0,1,2,0,4,0,0,4,4,0,0,4,0,2,1,0 ,0,0,0,3,0,3,0,3,3,0,3,0,3,0,0,0 ,0,0,2,0,2,0,2,0,0,2,0,2,0,2,0,0 ,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } int spA=16:// pattern No. int pbA=1://3 :// palette block No. int planeA=0:// plane No. // dim char ptnB(255)={ // あ(multi color) 0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,1,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,1,0 ,0,0,0,0,0,0,0,0 ,0,0,0,1,2,3,4,5 ,6,7,8,9,1,0,0,0 ,0,0,0,0,0,0,1,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,1,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,1,2 ,3,4,5,0,0,0,0,0 ,0,0,0,0,1,2,3,0 ,0,0,4,5,6,0,0,0 ,0,0,0,1,0,0,2,0 ,0,3,0,0,0,4,0,0 ,0,0,1,0,0,0,2,0 ,0,3,0,0,0,4,0,0 ,0,0,1,0,0,0,2,0 ,3,0,0,0,0,4,0,0 ,0,0,1,0,0,0,2,1 ,0,0,0,0,0,3,0,0 ,0,0,0,1,0,0,2,0 ,0,0,0,3,4,0,0,0 ,0,0,0,0,1,2,0,0 ,0,3,4,0,0,0,0,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0 } int spB=spA+1:// pattern No. int pbB=pbA+1:// palette block No. int planeB=planeA+1:// plane No. // int i,x,y sp_init():// Hide sprite screen sp_clr() sp_def(spA,ptnA) sp_def(spB,ptnB) for i = 0 to 7 sp_color(i,rgb(0,i*256/8,0),pbA) next // sp_color(0,0,pbB) sp_color(1,&hff00ffff,pbB) sp_color(2,&hffff00ff,pbB) sp_color(3,&h800000ff,pbB) sp_color(4,&h8080ffff,pbB) sp_color(5,&hff8080ff,pbB) sp_color(6,&hff0000ff,pbB) sp_color(7,&h00ff00ff,pbB) sp_color(8,&h0080ffff,pbB) sp_color(9,&hffffffff,pbB) // int pbA2=pbB+1 :// palette block No. for i = 0 to 7 sp_color(i,rgb(i*256/8,0,0),pbA2) next // width(32) vpage(B_SPAGE+B_TPAGE,YES):// display sprite screen //vpriority(TPAGE,SPAGE,GPAGE0,GPAGE1,GPAGE2,GPAGE3) vpriority(SPAGE,TPAGE,GPAGE0,GPAGE1,GPAGE2,GPAGE3) cls() tborder(1,CTHRED) // // Display sprite at touched position // str exit$,mes$ if isLocalizeJapan() then { exit$="中断" mes$="画面にタッチ&ドラッグしてください" } else { exit$="exit" mes$="Please touch & drag" } setFunctionKey(0,exit$,'!') setFunctionKeyBackgroundImage("funcBack.png") displayFunctionKeyAll(YES,YES):// v2.0 // setTouchArea(0,0,0,0,0,YES):// Need for getting any touch coordinate // dim float tpoint(2) int touchCnt str cs int dt=0,t int ts=time():/* start time locate(0,1):print mes$ // sp_disp(YES) // if NO then { sp_halt(YES):// Halt screen update until finish to change the values. sp_setting(planeA+0,0,0,spA,pbA2,SPRITE_FLIP_NONE,SPRITE_PRW_SPBG0BG1) sp_setting(planeA+1,16,16,spA,pbA2,SPRITE_FLIP_NONE,SPRITE_PRW_SPBG0BG1) sp_setting(planeA+2,32,32,spA,pbA2,SPRITE_FLIP_NONE,SPRITE_PRW_SPBG0BG1) sp_halt(NO):// Resume display end } // int x0=-1,y0=-1 repeat // timer count until key input while (not kbhit()) t=time() if t-ts>dt then { :/* change second dt=dt+1 // locate(20,0):print dt; // beep2(0) // locate(20,1) } touchCnt=getTouchPoint(tpoint) if (touchCnt>0) then { x=tpoint(0):// float → int y=tpoint(1) if x<>x0 or y<>y0 then { locate(0,0):print x;",";y sp_halt(YES):// Halt screen update until finish to change the values. // normal if pbA<>1 then { sp_setting(planeA , x, y,spA,pbA ,SPRITE_FLIP_NONE,SPRITE_PRW_SPBG0BG1) } else { // sp_move() is palette block 1 only sp_move( planeA , x, y,spA) } // Flip sp_setting(planeB , x+16, y+16,spB,pbB ,SPRITE_FLIP_NONE ,SPRITE_PRW_SPBG0BG1) sp_setting(planeB+1, x-16, y+16,spB,pbB ,SPRITE_FLIP_HORIZONTAL ,SPRITE_PRW_SPBG0BG1) sp_setting(planeB+2, x+16, y-16,spB,pbB ,SPRITE_FLIP_VERTICAL ,SPRITE_PRW_SPBG0BG1) sp_setting(planeB+3, x-16, y-16,spB,pbB ,SPRITE_FLIP_HORIZONTAL_VERTICAL,SPRITE_PRW_SPBG0BG1) // Same pattern by another palette sp_setting(planeB+4,wgx-x,wgy-y,spA,pbA2,SPRITE_FLIP_NONE,SPRITE_PRW_SPBG0BG1) sp_halt(NO):// Resume display // x0=x y0=y } // Do not re-displayed when the coordinate is same. Sprite would flicker Failure to do so. } endwhile // key operation cs=inkey$() until cs="!" float ver=osVersion() print "iOS=";ver // end
Zip archive file: XBsprite.zip
No comments:
Post a Comment