?? rhythm.c
字號:
#include <string.h>
#include <allegro.h>
#include "rhythm.h"
#include "timer.h"
#include "sound.h"
#include "edit.h"
#define NUM_ENEMY 4
#define MAN_X 80
#define MAN_Y 80
#define POS_X 100
#define POS_Y 300
#define ENM_X 800
#define ENM_Y 300
#define DELAY 100
int timer_t;
FILE * fp;
int rhy_len;
int rhy_notes[1000];
int rhy_b[1000];
int tot_time;
int exit_flag;
void draw_back(){
BITMAP *background;
background = load_bmp("pic/background.bmp", NULL);
blit(background, screen, 0, 0, 0, 0, background->w, background->h);
destroy_bitmap(background);
}
void init(){
allegro_init();
install_keyboard();
install_mouse();
install_timer();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT, 1024, 768, 0, 0);
set_color_conversion(COLORCONV_TOTAL);
install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);
load_midi_patches();
LOCK_VARIABLE(timer_t);
LOCK_FUNCTION(timer);
install_int_ex(timer, BPS_TO_TIMER(10));
}
void draw_heart(BITMAP *buff, int hp){
int i;
BITMAP *heart;
heart = load_bitmap("pic/hp.bmp", NULL);
for (i = 0; i < hp; ++i){
draw_sprite(buff, heart, i*heart->w, 0);
}
destroy_bitmap(heart);
}
void process(){
int hp = 5;
int i, j, k, res,rhy_len_che;
char str[100];
BITMAP *fb;
BITMAP *buff;
BITMAP *tot_fight;
BITMAP *man_fight[4];
BITMAP *man_stand;
BITMAP *enemy;
BITMAP *your_turn;
exit_flag = 0;
fp = fopen("data/rhy.txt", "r");
tot_fight = load_bitmap("pic/man_shoot.bmp", NULL);
for (i = 0; i < 4; ++i){
man_fight[i] = create_sub_bitmap(tot_fight, i*MAN_X, 0, MAN_X, MAN_Y);
}
your_turn = load_bitmap("pic/your_turn.bmp", NULL);
strcpy(str, "pic/enemy00.bmp");
man_stand = load_bitmap("pic/man_stand.bmp", NULL);
for (i = 0; i < NUM_ENEMY && hp > 0;)
{
buff=load_bitmap("pic/fight_back.bmp", NULL);
draw_sprite(buff, man_stand, POS_X, POS_Y);
str[10] = i+'0';
enemy = load_bitmap(str, NULL);
draw_sprite(buff, enemy, ENM_X, ENM_Y);
draw_heart(buff, hp);
vsync();
blit(buff, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
rhy_len_che=play_rhythm();
draw_sprite(buff, your_turn, (SCREEN_W-your_turn->w)/2, (SCREEN_H-your_turn->h)/2);
blit(buff, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
res = check(rhy_len_che);
if (exit_flag)
{
return;
}
for (j = 0; j < 4; ++j){
buff=load_bitmap("pic/fight_back.bmp", NULL);
draw_sprite(buff, man_fight[j], POS_X, POS_Y);
draw_sprite(buff, enemy, ENM_X, ENM_Y);
draw_heart(buff, hp);
vsync();
blit(buff,screen,0,0,0,0,SCREEN_W,SCREEN_H);
rest(DELAY);
}
buff=load_bitmap("pic/fight_back.bmp", NULL);
draw_sprite(buff, man_stand, POS_X, POS_Y);
if (res){
++i;
}
else{
--hp;
draw_sprite(buff, enemy, ENM_X, ENM_Y);
}
draw_heart(buff, hp);
vsync();
blit(buff,screen,0,0,0,0,SCREEN_W,SCREEN_H);
}
if (hp){
buff=load_bitmap("pic/win.bmp", NULL);
}
else{
buff=load_bitmap("pic/lose.bmp", NULL);
}
blit(buff,screen,0,0,0,0,SCREEN_W,SCREEN_H);
rest(1000);
destroy_bitmap(buff);
fclose(fp);
}
int main(void){
int mykey, end_game = 0;
init();
draw_back();
while(!end_game){
mykey = readkey();
mykey >>= 8;
switch(mykey){
case KEY_1:
process();
draw_back();
break;
case KEY_2:
edit_rhythm();
draw_back();
break;
case KEY_3:
end_game = 1;
break;
default:;
}
}
return 0;
}
END_OF_MAIN()
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -