Version 17.0.3

This commit is contained in:
Antonio Cañas Vargas 2017-09-14 02:32:36 +02:00
parent 69afbde17f
commit f63a0c9b90
6 changed files with 146 additions and 83 deletions

View File

@ -2389,6 +2389,7 @@ a:hover img.CENTRE_PHOTO_SHOW
.GAM_PLAY_CONTAINER
{
box-sizing:border-box;
display:table;
margin:5%;
}
.GAM_PLAY_NUM_QST
@ -2401,17 +2402,20 @@ a:hover img.CENTRE_PHOTO_SHOW
font-size:48pt;
font-weight:bold;
}
.GAM_PLAY_QST_STEM
.GAM_PLAY_QST_CONTAINER
{
width:85%;
float:left;
/* position:relative; */
padding-bottom:24pt;
}
.GAM_PLAY_QST
{
color:#404040;
font-size:24pt;
}
.GAM_PLAY_CONTINUE_CONTAINER
{
clear:all;
text-align:center;
}
.GAM_PLAY_CONTINUE_CONTAINER a

View File

@ -494,6 +494,7 @@ Assessment:
NEW. ActPlyGam Start playing a game
NEW. ActPlyGam1stQst Show first question when playing a game
NEW. ActPlyGamNxtQst Show next question when playing a game
NEW. ActPlyGamAns Show answers of current question when playing a game
NEW. ActAnsGam Answer a game
NEW. ActFrmNewGam Form to create a new game
NEW. ActEdiOneGam Edit one game
@ -1959,6 +1960,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActPlyGam */{1670,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_PlayGame ,NULL},
/* ActPlyGam1stQst */{1671,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Gam_PlayGameNextQuestion ,NULL},
/* ActPlyGamNxtQst */{1672,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_PlayGameNextQuestion ,NULL},
/* ActPlyGamAns */{1673,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_PlayGameShowAnswers ,NULL},
/* ActAnsGam */{1651,-1,TabUnk,ActSeeAllGam ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReceiveGameAnswers ,NULL},
/* ActFrmNewGam */{1652,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestCreatOrEditGame ,NULL},
/* ActEdiOneGam */{1653,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestCreatOrEditGame ,NULL},
@ -4726,6 +4728,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActPlyGam, // #1670
ActPlyGam1stQst, // #1671
ActPlyGamNxtQst, // #1672
ActPlyGamAns, // #1673
};
/*****************************************************************************/

View File

@ -58,9 +58,9 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 95 + 416 + 165 + 172 + 42 + 14 + 97)
#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 96 + 416 + 165 + 172 + 42 + 14 + 97)
#define Act_MAX_ACTION_COD 1672
#define Act_MAX_ACTION_COD 1673
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12
@ -490,51 +490,52 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActPlyGam (ActChgCalCrs1stDay + 50)
#define ActPlyGam1stQst (ActChgCalCrs1stDay + 51)
#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 52)
#define ActAnsGam (ActChgCalCrs1stDay + 53)
#define ActFrmNewGam (ActChgCalCrs1stDay + 54)
#define ActEdiOneGam (ActChgCalCrs1stDay + 55)
#define ActNewGam (ActChgCalCrs1stDay + 56)
#define ActChgGam (ActChgCalCrs1stDay + 57)
#define ActReqRemGam (ActChgCalCrs1stDay + 58)
#define ActRemGam (ActChgCalCrs1stDay + 59)
#define ActReqRstGam (ActChgCalCrs1stDay + 60)
#define ActRstGam (ActChgCalCrs1stDay + 61)
#define ActHidGam (ActChgCalCrs1stDay + 62)
#define ActShoGam (ActChgCalCrs1stDay + 63)
#define ActAddOneGamQst (ActChgCalCrs1stDay + 64)
#define ActGamLstTstQst (ActChgCalCrs1stDay + 65)
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 66)
#define ActReqRemGamQst (ActChgCalCrs1stDay + 67)
#define ActRemGamQst (ActChgCalCrs1stDay + 68)
#define ActUp_GamQst (ActChgCalCrs1stDay + 69)
#define ActDwnGamQst (ActChgCalCrs1stDay + 70)
#define ActPlyGamAns (ActChgCalCrs1stDay + 53)
#define ActAnsGam (ActChgCalCrs1stDay + 54)
#define ActFrmNewGam (ActChgCalCrs1stDay + 55)
#define ActEdiOneGam (ActChgCalCrs1stDay + 56)
#define ActNewGam (ActChgCalCrs1stDay + 57)
#define ActChgGam (ActChgCalCrs1stDay + 58)
#define ActReqRemGam (ActChgCalCrs1stDay + 59)
#define ActRemGam (ActChgCalCrs1stDay + 60)
#define ActReqRstGam (ActChgCalCrs1stDay + 61)
#define ActRstGam (ActChgCalCrs1stDay + 62)
#define ActHidGam (ActChgCalCrs1stDay + 63)
#define ActShoGam (ActChgCalCrs1stDay + 64)
#define ActAddOneGamQst (ActChgCalCrs1stDay + 65)
#define ActGamLstTstQst (ActChgCalCrs1stDay + 66)
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 67)
#define ActReqRemGamQst (ActChgCalCrs1stDay + 68)
#define ActRemGamQst (ActChgCalCrs1stDay + 69)
#define ActUp_GamQst (ActChgCalCrs1stDay + 70)
#define ActDwnGamQst (ActChgCalCrs1stDay + 71)
#define ActSeeOneSvy (ActChgCalCrs1stDay + 71)
#define ActAnsSvy (ActChgCalCrs1stDay + 72)
#define ActFrmNewSvy (ActChgCalCrs1stDay + 73)
#define ActEdiOneSvy (ActChgCalCrs1stDay + 74)
#define ActNewSvy (ActChgCalCrs1stDay + 75)
#define ActChgSvy (ActChgCalCrs1stDay + 76)
#define ActReqRemSvy (ActChgCalCrs1stDay + 77)
#define ActRemSvy (ActChgCalCrs1stDay + 78)
#define ActReqRstSvy (ActChgCalCrs1stDay + 79)
#define ActRstSvy (ActChgCalCrs1stDay + 80)
#define ActHidSvy (ActChgCalCrs1stDay + 81)
#define ActShoSvy (ActChgCalCrs1stDay + 82)
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 83)
#define ActRcvSvyQst (ActChgCalCrs1stDay + 84)
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 85)
#define ActRemSvyQst (ActChgCalCrs1stDay + 86)
#define ActSeeOneSvy (ActChgCalCrs1stDay + 72)
#define ActAnsSvy (ActChgCalCrs1stDay + 73)
#define ActFrmNewSvy (ActChgCalCrs1stDay + 74)
#define ActEdiOneSvy (ActChgCalCrs1stDay + 75)
#define ActNewSvy (ActChgCalCrs1stDay + 76)
#define ActChgSvy (ActChgCalCrs1stDay + 77)
#define ActReqRemSvy (ActChgCalCrs1stDay + 78)
#define ActRemSvy (ActChgCalCrs1stDay + 79)
#define ActReqRstSvy (ActChgCalCrs1stDay + 80)
#define ActRstSvy (ActChgCalCrs1stDay + 81)
#define ActHidSvy (ActChgCalCrs1stDay + 82)
#define ActShoSvy (ActChgCalCrs1stDay + 83)
#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 84)
#define ActRcvSvyQst (ActChgCalCrs1stDay + 85)
#define ActReqRemSvyQst (ActChgCalCrs1stDay + 86)
#define ActRemSvyQst (ActChgCalCrs1stDay + 87)
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 87)
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 88)
#define ActEdiExaAnn (ActChgCalCrs1stDay + 89)
#define ActRcvExaAnn (ActChgCalCrs1stDay + 90)
#define ActPrnExaAnn (ActChgCalCrs1stDay + 91)
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 92)
#define ActRemExaAnn (ActChgCalCrs1stDay + 93)
#define ActHidExaAnn (ActChgCalCrs1stDay + 94)
#define ActShoExaAnn (ActChgCalCrs1stDay + 95)
#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 88)
#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 89)
#define ActEdiExaAnn (ActChgCalCrs1stDay + 90)
#define ActRcvExaAnn (ActChgCalCrs1stDay + 91)
#define ActPrnExaAnn (ActChgCalCrs1stDay + 92)
#define ActReqRemExaAnn (ActChgCalCrs1stDay + 93)
#define ActRemExaAnn (ActChgCalCrs1stDay + 94)
#define ActHidExaAnn (ActChgCalCrs1stDay + 95)
#define ActShoExaAnn (ActChgCalCrs1stDay + 96)
/*****************************************************************************/
/******************************** Files tab **********************************/

View File

@ -250,13 +250,17 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 17.0.2 (2017-09-14)"
#define Log_PLATFORM_VERSION "SWAD 17.0.3 (2017-09-14)"
#define CSS_FILE "swad17.0.css"
#define JS_FILE "swad16.206.3.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
Version 17.0.3: Sep 14, 2017 Action to show current question with answers when playing a game. (227350 lines)
1 change necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1673','es','N','Mostrar respuestas de pregunta juego');
Version 17.0.2: Sep 14, 2017 Action to show next question when playing a game. (227293 lines)
2 changes necessary in database:
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1671','es','N','Mostrar primera pregunta juego');

View File

@ -125,11 +125,11 @@ static void Gam_PutParamQstInd (unsigned QstInd);
static unsigned Gam_GetParamQstInd (void);
static void Gam_RemAnswersOfAQuestion (long QstCod);
static unsigned Gam_GetQstIndFromQstCod (long GamCod,long QstCod);
static int Gam_GetQstIndFromQstCod (long GamCod,long QstCod); // TODO: Remove this function because a question code can be repeated
static long Gam_GetQstCodFromQstInd (long GamCod,unsigned QstInd);
static int Gam_GetMaxQuestionIndexInGame (long GamCod);
static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd);
static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd);
static int Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd);
static int Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd);
static void Gam_ListGameQuestions (struct Game *Game);
static void Gam_ListOneOrMoreQuestionsForEdition (struct Game *Game,
unsigned NumQsts,
@ -151,6 +151,8 @@ static void Gam_ExchangeQuestions (long GamCod,
unsigned QstIndTop,unsigned QstIndBottom);
static void Gam_PutBigButtonToStartGame (long GamCod);
static void Gam_PlayGameShowQuestionAndAnswers (bool ShowAnswers);
static void Gam_PutBigButtonToContinue (Act_Action_t NextAction,
long GamCod,unsigned QstInd);
@ -2565,28 +2567,30 @@ static void Gam_RemAnswersOfAQuestion (long QstCod)
/*****************************************************************************/
/******************** Get next question index in a game **********************/
/*****************************************************************************/
// TODO: Remove this function because a question code can be repeated
static unsigned Gam_GetQstIndFromQstCod (long GamCod,long QstCod)
static int Gam_GetQstIndFromQstCod (long GamCod,long QstCod)
{
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned QstInd = 0;
int QstInd = -1;
/***** Get number of games with a field value from database *****/
sprintf (Query,"SELECT QstInd FROM gam_questions"
" WHERE GamCod=%ld AND QstCod=%ld",
GamCod,QstCod);
if (!DB_QuerySELECT (Query,&mysql_res,"can not get question index"))
{
{
Ale_ShowAlert (Ale_INFO,Query);
Lay_ShowErrorAndExit ("Error when getting question index.");
}
}
/***** Get question index (row[0]) *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&QstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting question index.");
if (row[0])
if (sscanf (row[0],"%d",&QstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting question index.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
@ -2654,13 +2658,15 @@ static int Gam_GetMaxQuestionIndexInGame (long GamCod)
/*****************************************************************************/
/*********** Get previous question index to a given index in a game **********/
/*****************************************************************************/
// Question index can be 0, 1, 2,...
// Return -1 if no previous question
static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd)
static int Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd)
{
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned PrevQstInd;
int PrevQstInd = -1;
/***** Get previous question index in a game from database *****/
// Although indexes are always continuous...
@ -2673,8 +2679,9 @@ static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd)
/***** Get previous question index (row[0]) *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&PrevQstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting previous question index.");
if (row[0])
if (sscanf (row[0],"%d",&PrevQstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting previous question index.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
@ -2685,13 +2692,15 @@ static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd)
/*****************************************************************************/
/************* Get next question index to a given index in a game ************/
/*****************************************************************************/
// Question index can be 0, 1, 2,...
// Return -1 if no next question
static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd)
static int Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd)
{
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NextQstInd;
int NextQstInd = -1;
/***** Get next question index in a game from database *****/
// Although indexes are always continuous...
@ -2704,8 +2713,9 @@ static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd)
/***** Get next question index (row[0]) *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NextQstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting next question index.");
if (row[0])
if (sscanf (row[0],"%d",&NextQstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting next question index.");
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
@ -3233,7 +3243,7 @@ void Gam_RequestRemoveQst (void)
Lay_ShowErrorAndExit ("Wrong code of question.");
/* Get question index */
QstInd = Gam_GetQstIndFromQstCod (Game.GamCod,QstCod);
QstInd = (unsigned) Gam_GetQstIndFromQstCod (Game.GamCod,QstCod); // TODO: Remove this function because a question code can be repeated
/***** Show question and button to remove question *****/
Gbl.Games.CurrentGamCod = Game.GamCod;
@ -3273,7 +3283,7 @@ void Gam_RemoveQst (void)
Lay_ShowErrorAndExit ("Wrong code of question.");
/* Get question index */
QstInd = Gam_GetQstIndFromQstCod (Game.GamCod,QstCod);
QstInd = (unsigned) Gam_GetQstIndFromQstCod (Game.GamCod,QstCod); // TODO: Remove this function because a question code can be repeated
/***** Remove the question from all the tables *****/
/* Remove answers from this test question */
@ -3312,8 +3322,8 @@ void Gam_MoveUpQst (void)
extern const char *Txt_The_question_has_been_moved_up;
struct Game Game;
long QstCod;
unsigned QstIndTop;
unsigned QstIndBottom;
int QstIndTop;
int QstIndBottom;
/***** Get parameters from form *****/
/* Get game code */
@ -3325,17 +3335,19 @@ void Gam_MoveUpQst (void)
Lay_ShowErrorAndExit ("Wrong code of question.");
/* Get question index */
QstIndBottom = Gam_GetQstIndFromQstCod (Game.GamCod,QstCod);
QstIndBottom = Gam_GetQstIndFromQstCod (Game.GamCod,QstCod); // TODO: Remove this function because a question code can be repeated
/***** Move up question *****/
if (QstIndBottom > 0)
{
/* Indexes of questions to be exchanged */
QstIndTop = Gam_GetPrevQuestionIndexInGame (Game.GamCod,QstIndBottom);
if (QstIndTop < 0)
Lay_ShowErrorAndExit ("Wrong index of question.");
/* Exchange questions */
Gam_ExchangeQuestions (Game.GamCod,
QstIndTop,QstIndBottom);
(unsigned) QstIndTop,(unsigned) QstIndBottom);
/* Success alert */
Ale_ShowAlert (Ale_SUCCESS,Txt_The_question_has_been_moved_up);
@ -3357,8 +3369,8 @@ void Gam_MoveDownQst (void)
extern const char *Txt_The_question_has_been_moved_down;
struct Game Game;
long QstCod;
unsigned QstIndTop;
unsigned QstIndBottom;
int QstIndTop;
int QstIndBottom;
int MaxQstInd; // -1 if no questions
/***** Get parameters from form *****/
@ -3371,20 +3383,23 @@ void Gam_MoveDownQst (void)
Lay_ShowErrorAndExit ("Wrong code of question.");
/* Get question index */
QstIndTop = Gam_GetQstIndFromQstCod (Game.GamCod,QstCod);
QstIndTop = Gam_GetQstIndFromQstCod (Game.GamCod,QstCod); // TODO: Remove this function because a question code can be repeated
/* Get maximum question index */
MaxQstInd = Gam_GetMaxQuestionIndexInGame (Game.GamCod);
/***** Move down question *****/
if (MaxQstInd > 0)
if (QstIndTop < (unsigned) MaxQstInd)
if (QstIndTop < MaxQstInd)
{
/* Indexes of questions to be exchanged */
QstIndBottom = Gam_GetNextQuestionIndexInGame (Game.GamCod,QstIndTop);
if (QstIndBottom < 0)
Lay_ShowErrorAndExit ("Wrong index of question.");
/* Exchange questions */
Gam_ExchangeQuestions (Game.GamCod,QstIndTop,QstIndBottom);
Gam_ExchangeQuestions (Game.GamCod,
(unsigned) QstIndTop,(unsigned) QstIndBottom);
/* Success alert */
Ale_ShowAlert (Ale_SUCCESS,Txt_The_question_has_been_moved_down);
@ -3501,12 +3516,31 @@ static void Gam_PutBigButtonToStartGame (long GamCod)
/*****************************************************************************/
void Gam_PlayGameNextQuestion (void)
{
Gam_PlayGameShowQuestionAndAnswers (false); // Don't show answers
}
/*****************************************************************************/
/************ Show question and its answers when playing a game **************/
/*****************************************************************************/
void Gam_PlayGameShowAnswers (void)
{
Gam_PlayGameShowQuestionAndAnswers (true); // Show answers
}
/*****************************************************************************/
/************ Show question and its answers when playing a game **************/
/*****************************************************************************/
static void Gam_PlayGameShowQuestionAndAnswers (bool ShowAnswers)
{
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
struct Game Game;
unsigned QstInd;
int NxtQstInd;
/***** Get parameters *****/
/* Get game code */
@ -3539,6 +3573,7 @@ void Gam_PlayGameNextQuestion (void)
row = mysql_fetch_row (mysql_res);
/***** Show question *****/
/* Start container for number and question */
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_CONTAINER\">");
/* Write number of question */
@ -3546,16 +3581,31 @@ void Gam_PlayGameNextQuestion (void)
QstInd + 1);
/* Write the stem (row[1]) and the image (row[2], row[3], row[4]) */
Tst_WriteQstStem (row[1],"GAM_PLAY_QST_STEM");
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_QST_CONTAINER\">");
Tst_WriteQstStem (row[1],"GAM_PLAY_QST");
Img_GetImageNameTitleAndURLFromRow (row[2],row[3],row[4],&Gbl.Test.Image);
Img_ShowImage (&Gbl.Test.Image,
"TEST_IMG_EDIT_LIST_STEM_CONTAINER",
"TEST_IMG_EDIT_LIST_STEM");
/***** Put button to show answers *****/
Gam_PutBigButtonToContinue (ActPlyGamNxtQst,Game.GamCod,QstInd);
if (ShowAnswers)
fprintf (Gbl.F.Out,"answers");
fprintf (Gbl.F.Out,"</div>");
/* End container for number and question */
fprintf (Gbl.F.Out,"</div>");
/***** Put button to continue *****/
if (ShowAnswers)
{
/* Get index of the next question */
NxtQstInd = Gam_GetNextQuestionIndexInGame (Game.GamCod,QstInd);
if (NxtQstInd > 0)
/* Put button to show next question */
Gam_PutBigButtonToContinue (ActPlyGamNxtQst,Game.GamCod,(unsigned) NxtQstInd);
}
else
/* Put button to show answers */
Gam_PutBigButtonToContinue (ActPlyGamAns,Game.GamCod,QstInd);
}
/*****************************************************************************/
@ -3577,8 +3627,8 @@ static void Gam_PutBigButtonToContinue (Act_Action_t NextAction,
/***** Put icon with link *****/
Act_LinkFormSubmit (Txt_Continue,"GAM_PLAY_CONTINUE ICO_HIGHLIGHT",NULL);
fprintf (Gbl.F.Out,"<img src=\"%s/step-forward64x64.png\" alt=\"%s\" title=\"%s\""
" class=\"ICO64x64\" />"
fprintf (Gbl.F.Out,"<img src=\"%s/step-forward64x64.png\""
" alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />"
"<br />"
"%s",
Gbl.Prefs.IconsURL,Txt_Continue,Txt_Continue,

View File

@ -126,6 +126,7 @@ void Gam_PlayGame (void);
void Gam_ReceiveGameAnswers (void);
void Gam_PlayGameNextQuestion (void);
void Gam_PlayGameShowAnswers (void);
unsigned Gam_GetNumCoursesWithCrsGames (Sco_Scope_t Scope);
unsigned Gam_GetNumCrsGames (Sco_Scope_t Scope);