私はかなりプログラミングに新しいので、オープニングを教えるためにチェスプログラムを作成することになりました。私のゲームのゲームループの中には、ゲームループのある時点を除き、ユーザーからの入力を止めて、画面を描画してループを続ける前にその情報を処理するのを待っている以外、必要なものはすべてあります。しかし、私がそれをするとき、ユーザーが長い間(〜8秒)(コンソール入力の入力をbtwした後、それが変わる)を待つと、ゲームがクラッシュし、私は標準のubuntuを手に入れます。強制終了または待機 "メッセージを表示します。このメッセージはポップアップしないようにしたいと思いますが、どうしたらいいか分かりません。プロセスがSDL(衝突)クラッシュなしで実行しようとしているC
ここに私のコードは、ところでです:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "SDL2/SDL.h"
void drawBoard(SDL_Renderer *renderer)
{}
void drawPieces(char fen[100])
{}
int processEvents(SDL_Window *window)
{}
インクルードは超重要長くはないので、私は、これらの機能を残している(あなたは私をしたい場合、私は後でそれらを入れます)
void next_move(char firstmove[10], char response[10])
{
int cont = 0;
char move[6];
printf("%s\n>>", firstmove);
while(cont == 0)
{
scanf("%s", move);
if(strcmp(move, response) == 0)
cont = 1;
else
printf("Incorrect.\n%s\n>>", firstmove);
}
}
void caro_kann()
{
printf("YOU HAVE SELECTED The Caro Kann Opening (main line)\n");
next_move("1. e4", "c6");
next_move("2. d4", "d5");
next_move("3. Nc6", "dxe4");
next_move("4. Nxe4", "Bf5");
next_move("5. Ng3", "Bg6");
next_move("6. h4", "h6");
next_move("7. Nf3", "Nd7");
printf("success\n");
}
int main()
{
int done = 0;
SDL_Event event;
SDL_Window *window;
SDL_Renderer *renderer;
//initialize everything
SDL_Init(SDL_INIT_VIDEO);
//setting up the window
window = SDL_CreateWindow("PlatoChess ALPHA 1.0",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
800,
800,
0);
//Setting up the renderer
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
//setting up the program loop
while(!done)
{
if(processEvents(window) == 1)
done = 1;
caro_kann();
drawBoard(renderer);
SDL_Delay(10); //to cap the FPS
}
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
ご協力いただければ幸いです。