Okay, ich bin ziemlich neu in der Programmierung, also dachte ich, als meine erste echte Programmieraufgabe würde ich ein Schachprogramm machen, um Öffnungen zu lehren. In meiner Game-Game-Schleife habe ich alles, was ich brauche, außer an einem Punkt in der Spielschleife, den ich für die Eingabe des Benutzers anhalten möchte, und warte darauf, diese Informationen zu verarbeiten, bevor ich den Bildschirm zeichne und die Schleife fortsetze. Aber wenn ich das tue, wenn der Benutzer zu lange auf die Eingabe wartet (~ 8 Sekunden) (zwischendurch die Eingabe in der Konsoleneingabe, das wird sich später ändern), dann stürzt das Spiel ab und ich bekomme das Standard-Ubuntu "Willst du? erzwinge oder warte "Nachricht. Ich möchte diese Nachricht davon abhalten, aufzutauchen, aber ich weiß nicht wie.Versuch, einen Prozess ohne SDL (percieved) Absturz laufen zu lassen C
Hier ist mein Code btw:
#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)
{}
ich diese Funktionen aus verlasse, weil die lange und nicht super wichtig sind (wenn Sie wollen, dass ich sie später nach oben gestellt werden)
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;
}
Jede Hilfe wäre sehr willkommen!