我制作经典的基于文本的冒险。现在似乎运作良好。我的问题(和问题)是放置sound_main()函数的地方。我试着把它放到任何地方,但是根据我把它放在哪里,我会遇到一些麻烦,因为这首歌立即开始,可以插入输入。我希望音乐与游戏同时播放,不受阻碍。这是代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include "mmsystem.h"
#define MAX_LEN 128
void magenta(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int f;
SetConsoleTextAttribute(hConsole, f=11);
}
void red(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int k;
SetConsoleTextAttribute(hConsole, k=12);
}
void white(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int l;
SetConsoleTextAttribute(hConsole, l=15);
}
void green(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int a;
SetConsoleTextAttribute(hConsole, a=10);
}
void submenu2(void);
void print_image(FILE *fptr);
void menu();
void main_menu();
int image(){
char *filename = "kilroy.txt";
FILE *fptr = NULL;
white();
printf("\t\tGAME:TITLE\n");
magenta();
if((fptr = fopen(filename,"r")) == NULL)
{
fprintf(stderr,"error opening %s\n",filename);
return 1;
}
print_image(fptr);
}
void main_menu(){
image();
red();
printf("\n\t\t\tSoftware version 1.0 Beta");
green();
printf("\t\t\t All rights reserved 2018\n\n");
white();
printf("[1] Play\n");
printf("[2] Credits\n");
printf("[3] Exit\n>>");
}
void submenu2(void){
for(;;){
char choice1;
system("cls");
printf("Written by Frank & Alex\nIDE: Bloodshed Dev-C++\nProgrammed in C\nFebruary 2018\n");
printf("Press b key to come back to menu...\n>>");
scanf("%c",&choice1);
if(choice1 == 'b'){
system("cls");
main_menu();
break;} // come back to mainmenu
else
printf("wrong input. try again.");
}
}
void menu(){
int choice,i=1;
main_menu();
while(i){
scanf("%d",&choice);
switch(choice){
case 1:
break;
case 2:
submenu2();
break;
case 3:
system("cls");
green(); printf("\n\t\t\t\t\t ***************************************\n ");
red();printf("\n\t\t\t\t\t ***********Thanks for playing**********\n");
white();printf("\n\t\t\t\t\t ***************************************\n ");
i = 0; /* loop exit */
break;
default:
printf("\nInvalid choice!\n>>");
break;
}
}
}
int main(void)
{
menu();
}
void print_image(FILE *fptr)
{
char read_string[MAX_LEN];
while(fgets(read_string,sizeof(read_string),fptr) != NULL)
printf("%s\t\t\t\t",read_string);
}
int sound_main()
{
PlaySound(TEXT("Battle.wav"), NULL, SND_SYNC);
return 0;
}