幸运飞艇停吗

ASP源碼.NET源碼PHP源碼JSP源碼JAVA源碼DELPHI源碼PB源碼VC源碼VB源碼Android源碼
當前位置:首頁 >> 網絡編程 >> 其他編程教程 >> CC65 開發FC/NES 游戲(三)使用搖桿

CC65 開發FC/NES 游戲(三)使用搖桿

來源:網絡整理     時間:2018-11-01     關鍵詞:

幸运飞艇停吗 BENPIANWENZHANGZHUYAOJIESHAOLE" CC65 KAIFAFC/NES YOUXI(SAN)SHIYONGYAOGAN",ZHUYAOSHEJIDAOFANGMIANDENEIRONG,DUIYUQITABIANCHENGJIAOCHENGGANXINGQUDETONGXUEKEYICANKAOYIXIA: CC65ZAIWODEWENZHANG(YI)ZHONGKEYIHUOQUDAO HUOZHEZHIJIEQUgithubXIAZAIcc65 ZHECIDEDAIMALAIZIcc65DEsamplesMULUXIADEhello.c BINGZUOLEXIUGAIHEZHUSHI TONGGUOCHA...

CC65在我的文章(一)中可以獲取到 或者直接去github下載cc65
這次的代碼來自cc65的samples目錄下的hello.c 并做了修改和注釋
通過查看源碼可以看到里面支持的機器類型
#if defined(__NES__) || defined(__PCE__) || defined(__GAMATE__)
NES PCE GAMATE
通過 cmd 命令將 c 編譯成 nes 文件
cl65 -t nes -o demo.nes demo.c
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <joystick.h>

static const char Text [] = "Hello world!";

// 2個臨時變量,防止按住了按鍵頻繁輸出造成的閃爍
unsigned int p1,pt1;

// 屏幕四邊劃線,原始代碼暫時沒處理
void drawline(void){
    unsigned char XSize, YSize;
	// 清屏,光標移到左上角
    clrscr ();

    // 獲取屏幕尺寸,傳入地址相當于讓函數給這2個地址賦值
    screensize (&XSize, &YSize);

    /* Draw a border around the screen */

    //頂端線
    cputc (CH_ULCORNER);
    chline (XSize - 2);
    cputc (CH_URCORNER);

    /* Vertical line, left side */
    cvlinexy (0, 1, YSize - 2);

    //底端線
    cputc (CH_LLCORNER);
    chline (XSize - 2);
    cputc (CH_LRCORNER);

    /* Vertical line, right side */
    cvlinexy (XSize - 1, 1, YSize - 2);

    // 屏幕正中間顯示 hello world 文字
	// 就是將光標移到
    gotoxy ((XSize - strlen (Text)) / 2, YSize / 2);
    cprintf ("%s", Text);

}

void main (void)
{
    // 屏幕顏色,黑底白字
    (void) textcolor (COLOR_WHITE);
    (void) bordercolor (COLOR_BLACK);
    (void) bgcolor (COLOR_BLACK);
	
	// 屏幕四邊劃線(前面的方法)
	drawline();
	

    // 初始化手柄
    joy_install (joy_static_stddrv);
	

    while (1){
		p1 = joy_read (JOY_1);

		// start 和 select 一起按的時候跳出循環,相當于重啟
		if(p1==12){break;}

		// p1的案件一直沒變的情況不做響應
		if(p1==pt1){continue;}
		pt1=p1;
		
		// 輸出按鍵對應的數值,因為長短不同需要空格覆蓋原有位置的字符
		gotoxy(1,1);
		cprintf("   ");
		gotoxy(1,1);
		cprintf("%d",p1);
	}
    
	// 前面使用break 跳出循環會走到這里
	gotoxy(0,0);
	cprintf("over");
}


通過這個demo我們可以獲取到按鍵對應的數值
A      - 1
B      - 2
select - 4
start  - 8
上     - 16
下     - 32
左     - 64
右     - 128
連發 A 和 B 就是這2個數字頻閃
解釋:
其實這個按鍵的取值是從默認的地址獲取一個 16進制的值
比如右這個值最大對應的
十進制 128
16進制 80
二進制 10000000
同理左的二進制 是  01000000
如果全按了就會顯示 11111111
當多個按鍵一起按的時候相當于累加 比如 AB一起按輸出的就是 3
截圖是我用qq的 ctrl+alt+a 同時按著下(s) 相當于同時按了 左和下 顯示的就是 96

YISHANGJIUJIESHAOLE CC65 KAIFAFC/NES YOUXI(SAN)SHIYONGYAOGAN,BAOKUOLEFANGMIANDENEIRONG,XIWANGDUIQITABIANCHENGJIAOCHENGYOUXINGQUDEPENGYOUYOUSUOBANGZHU。

幸运飞艇停吗 BENWENWANGZHILIANJIE:http://snifly.cn/article/detail_4596271.html

幸运飞艇停吗

相關圖片

相關文章