200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 小游戏代码编程c Code如何编写运行CC – 游戏开发 – 前端

小游戏代码编程c Code如何编写运行CC – 游戏开发 – 前端

时间:2021-09-20 21:02:36

相关推荐

小游戏代码编程c Code如何编写运行CC – 游戏开发 – 前端

1.安装C/C++ for Visual Studio Code,这个直接在扩展中搜索“C++”,点击右下角install安装C/C++ for Visual Studio Code就行,如下:

2.安装成功后,大家就需要安装MinGW编译器了,这个直接在MinGW官网上下载就行,很快就能下载成功:

之后,点击安装就行,如下,稍微等待一下:

安装成功后,大家需要将MinGW安装目录下的bin目录添加到环境变量中,以方便后面使用,如下,换成你自己的目录路径:

接着,大家打开cmd窗口,输入“g++ -v”查看一下,环境变量是否配置成功,如下,说明已经添加成功:

3.一切就绪后,最后面就是编写C++代码进行测试了,如下,大家新建一个main.cpp文件,测试代码如下,很简单:

接着大家点击Debug运行,选择“C++(GDB/LLDB)”,如下:

然后就会弹出如下launch.json这个配置文件,原始配置如下:

大家需要对这个配置文件进行修改,配置成大家程序能正常运行的环境,如下,这里主要修改“program”,“miDebuggerPath”,“preLaunchTask”这3个参数,其中program改成你生成的exe的路径,也就是”${workspaceRoot}/${fileBasenameNoExtension}.exe”,miDebuggerPath改成你的MinGW的gdb路径,偶的是”D:\\MinGW\\mingw32\\bin\\gdb.exe”,记着添加反斜杠\,不然会出错,最后,就是添加preLaunchTask,也就是g++编译,完整配置如下:

接着大家在当前的vscode文件夹下面新建一个tasks.json文件,配置如下:

最后,就是点击“Debug”运行了,如下,程序已经成功运行,到此环境就配置成功了:

至此,大家就完成了VS Code的C/C++环境的配置。总的来说,整个过程不难,就是分为2步,一步安装插件,一步安装MinGW编译器,最后,就能正常的编写运行C/C++代码了,只要你按着以上步骤配置一下,很快就能成功,网上也有相关教程和资料,感兴趣的可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。

怎样用C语言编写歌曲程序和歌曲代码?

//绝对调试通过,AVR-GCC,mega16,带数码显示,单键开关多功能控制

#include <avr/io.h>

#include <avr/interrupt.h>

#include <tone.h>

#include <avr/pgmspace.h>

#define uchar unsigned char

#define uint unsigned int

#define key_input PINA

#define pgm16(A) ((typeof(A))pgm_read_word(&(A)))

const unsigned char seg_code[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x7f,0x3f};

const uint music[] PROGMEM={M3,F2,M5,B1,M3,F4,M2,F4,M1,B2,L6,F2,M1,F2,MM,M1,F2,L6,F2,L5,B2,L6,F2,M1,B1,MM,M1,F2,L6,F2,M6,F2,L5,F2,M3,F2,M2,F2,MM,M2,F4,M1,F4,L6,F2,M3,F2,M2,B2,M3,F2,MM,M3,F2,MM,M3,F2,M2,F2,M1,B2,L6,F2,M1,F2,L7,F2,L5,F2,L6,B2, L5,F2,L6,F2,MM,L6,F2,L5,F2,M6,F2,M5,F2,MM,M5,F2,M3,F2,M2,F2,MM,M2,F4,M3,F4,M3,F2,M2,F2,M1,B2,M6,F2,H1,B1,M6,F2,H2,F2,H1,F2,MM,H1,F2,M6,F2,MM,M6,F2,M5,F2,MM,M5,F2,M3,F2,M5,B2, M6,F2,H1,B1,M6,F2,H2,F2,H1,F2,MM,H1,F2,M6,F2,M5,F2,MM,M5,F2,MM,M5,F2,M3,F2,M2,B2,M3,B1,MM,M3,F2,M5,F2,M6,F2,M5,F2,MM,M5,F2,M3,F2,MM,M3,F2,M2,F2,MM,M2,F2,M1,F2,L6,B2, L5,F2,M5,F4,MM,M5,F4,MM,M5,F2,M6,F2,M5,F2,M3,F2,M2,F2,M3,F2,MM,M3,F2,M2,B1,L6,F2,M1,B2,M6,F2,H1,B1,M6,F2,H2,F2,H1,B1,M6,F2,MM,M6,F2,M5,F2,MM,M5,F2,M3,F2,M5,B2, M6,F2,H1,B1,M6,F2,H2,F2,H1,B1,M6,F2,M5,F2,MM,M5,F2,MM,M5,F2,M3,F2,M2,B2,MM, M2,F2,MM,M2,F4,M1,F4,M2,F2,M3,F2,M5,F2,MM,M5,F2,MM,M5,F2,M3,F2,M2,F2,MM,M2,F4,M3,F4,M2,F2,M1,F2,L6,B2,L5,F2,M5,F4,MM,M4,F4,MM,M5,F2,M6,F2,M5,F2,M3,F2,M2,F2,M2,F4,M3,F4,MM,M3,F2,M2,B1,L6,F2,M1,B3,0XFF,0XFF};

//因为两个相同的音符之间无停顿,人为插入了MM(极短暂的

volatile uint i=1;

volatile uchar timeOK=0;

uchar key_scan(void);

ISR(TIMER0_COMP_vect) //CTC模式,控制音调高低

{

OCR0=pgm16(music[i-1]);

}

ISR(TIMER1_OVF_vect) //时间溢出模式,控制节拍长短

{

i+=2;

TCNT1H=(65536-pgm16(music[i]))/256; //相当于(65536-beat[i])/256

TCNT1L=(65536-pgm16(music[i]))%256; //相当于(65536-beat[i])%256

if(pgm16(music[i])==0xff)i=1; //在音调数组的最后加一个0xff,作为终止信号

if(pgm16(music[i])==0x00)TIMSK&=(~(1<<OCIE0));

else TIMSK|=(1<<OCIE0);

}

ISR(TIMER2_OVF_vect) //时间溢出模式,用于检测按键,周期10ms

{

TCNT2=100;

timeOK=1;

}

void timer0_init(void)

{

TCCR0=0x00;

TCNT0=0x00;

OCR0=pgm16(music[i-1]);

TCCR0=0x1a;

//TIMSK|=(1<<OCIE0);

}

void timer1_init(void)

{

TCCR1B=0x00;

TCNT1H=(65536-pgm16(music[i]))/256;

TCNT1L=(65536-pgm16(music[i]))%256;

TCCR1A=0x00;

TCCR1B=0x05;

//TIMSK|=(1<<TOIE1);

}

void timer2_init(void)

{

TCCR2=0x00;

TCNT2=100;

TCCR2=0x03;

TIMSK|=(1<<TOIE2);

}

void MCU_init(void)

{

DDRA=0X00;

DDRB=0X00;

DDRC=0XFF;

DDRD=0XFF;

PORTB=0X00;

PORTC=0xfe;

PORTD=0xff;

}

uchar key_scan(void) //按钮扫描函数

{

static uchar key_state=0,key_time1=0,key_time0=0; //静态变量,调用以后,值被保留;

uchar key_press,key_return=0;

key_press=(~key_input)&0x01; //有键1,无键0

switch(key_state) //状态机

{

case 0: //状态0:无按钮按下状态

if(key_press)key_state=1;

break;

case 1: //状态1:检测到有按钮被按下

if(key_press) //按钮仍按下,转2

{

//TIMSK^=(1<<TOIE0);

key_state=2;

key_time1=0;//按下时间初始

}

else //按钮已经释放,消抖

key_state=0;

break;

case 2: //状态2:等待释放或等待按下时间达到长按要求

if(!key_press) //按钮已经释放,转3,继续判断是双按还是单按

{

key_state=3;

key_time0=0;//释放时间初始

}

else if (++key_time1>=100) //按下时间达到1000ms,返回值2,作长按判断,转7等待按钮释放

{

key_state=8;

key_time1=0;

key_return=2;

}

break;

case 8:

if(!key_press)

{

key_state=0;

key_time1=0;

}

else if (++key_time1>=50)

{

key_return=2;

key_time1=0;

}

break;

case 3: //状态3:双按的第二次按钮输入前的等待间隙,设定100ms(经过测试,100ms为比较合适的时间间隙,即为人体普通可以双击的速度

if(key_press)key_state=4; //在此时间,如果有按钮被按下,将当作释放抖动,转4进一步作出判断

else if (++key_time0>4) //如果没有按钮被按下,则等待此100ms过去,然后转5

{

key_state=5;

key_time0=0;

}

break;

case 4: //状态4:第二按的消抖处理

if(key_press)key_state=2; //快速连按(被认为人手指达不到要求的速率)将被返回到2,当作第一按处理

else key_state=3; //如果第二按只出现一次,不到10ms,消抖

break;

case 5: //状态5:第二按前等待时间到达,进入正常的第二按等待输入状态,第二按只允许在此时间内输入方为有效

if(key_press)key_state=6; //此时间内有被按下,转6,判决抖动;

else if(++key_time0>14) //无输入,则等待输入有效时间过去,时间满后,判定为单按,返回值1,状态位回到0

{

key_state=0;

key_time0=0; //双击间隔时间一般为100ms,能够稳定做到第二击完成时间总共约180~200ms(因人而异)

key_return=1; //为增加采样成功率,可适当缩短第二按前的间隙时间,增加第二按等待输入时间,但总时间不可短于150ms

} //小于150ms,手指将很难达到双击的速度要求,如果时间太长则单按判断时间过长,按钮不灵敏,此处180ms经测试较为合适

break;

case 6: //状态6:第二按的抖动判断

if(key_press)//按钮仍有效,按下有效,返回3,双按成立,转7等待按钮释放

{

key_state=7;

key_return=3;

}

else key_state=5;//抖动消除,退回5继续等待输入或等待输入有效时间过去

case 7: //按钮释放等待状态,所有已按下并被识别操作目的的按钮状态都将转到7等待按钮释放,并将所有计时初始

if(!key_press)key_state=0;

key_time1=0;

key_time0=0;

break;

}

return key_return;

}

int main(void)

{

MCU_init();

timer0_init();

timer1_init();

timer2_init();

sei();

while(1)

{

if(timeOK)

{

cli();

uchar key;

key=key_scan();

if(key>0)PORTD=seg_code[key];

switch(key)

{

case 1:

TIMSK^=((1<<OCIE0)|(1<<TOIE1)); DDRB^=(1<<DDB3); PORTC=0xfd;

break;

case 2:

//TIMSK|=((1<<OCIE0)&(1<<TOIE1));

if(i>1)i+=10;

if (i>=(sizeof(music)-20))

{

i=1;

TIMSK&=(~((1<<OCIE0)|(1<<TOIE1)));

DDRB&=~(1<<DDB3);

}

PORTC=0xf0;

break;

case 3:

TIMSK&=(~((1<<OCIE0)|(1<<TOIE1)));

i=1;

TIMSK|=((1<<OCIE0)|(1<<TOIE1));

PORTC=0xfe;

break;

default:

break;

}

timeOK=0;

sei();

}

}

}

在Proteus中怎么用C语言写代码?

proteus不能直接写C代码 只能运行仿真keil写好 并编译的C代码 proteus+keil 这个才是完整的。

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