1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > CC65 开发FC/NES 游戏(三)使用摇杆

CC65 开发FC/NES 游戏(三)使用摇杆

时间:2020-11-28 03:37:44

相关推荐

CC65 开发FC/NES 游戏(三)使用摇杆

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 和 B 就是这个数字频闪 0和对应的1,2两个数字

解释:

其实这个按键的取值是从默认的地址获取一个 16进制的值

比如右这个值最大对应的

十进制 128

16进制 80

二进制 10000000

同理左的二进制 是 01000000

如果全按了就会显示 11111111

当多个按键一起按的时候相当于累加 比如 AB一起按输出的就是 3

截图是我用qq的 ctrl+alt+a 同时按着下(s) 相当于同时按了 左和下 显示的就是 96

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。