TEST(gogamenn_scaling_check, scale_3_5_uniform) { // Validate we can scale withut issue. GoGameNN size3(3, true); size3.initialize_random(); GoGameNN size5(5, true); EXPECT_NO_THROW(size5.scale_network(size3)); }
TEST(gogamenn_scaling_check, scale_uniform_mismatch) { // Validate we can scale without issue. GoGameNN size3(3, true); size3.initialize_random(); GoGameNN size5(5, false); EXPECT_THROW(size5.scale_network(size3), GoGameNNScaleError); }
void Collider::UpdateSize(const maths::Vec2& size) { switch (m_type) { case ColliderType::Circle: m_circle.m_raidus = maths::Min(size.x, size.y); break; case ColliderType::AABB: maths::Vec3 position = (m_aabb.m_topRight + m_aabb.m_bottomLeft) / 2.0f; maths::Vec3 size3(size.x/2.0f, size.y/2.0f); m_aabb.m_bottomLeft = position - size3; m_aabb.m_topRight = position + size3; break; } }
inline void size4_1(const It a) { size3(a); const It b = ++It(a); const It c = ++It(b); const It d = ++It(c); const auto t = *d; if (*b > t) { *d=*c; *c=*b; if (*a > t) {*b=*a;*a=t;} else {*b=t;} } else if (*c > t) {*d=*c;*c=t;} }
TEST(gogamenn_scaling_check, scale_3_5_7_check_segments_uniform) { GoGameNN size3(3, true); size3.initialize_random(); std::vector<NeuralNet> size_3_layer1 = size3.get_layer1(); GoGameNN size5(5, true); size5.scale_network(size3); std::vector<NeuralNet> size_5_layer1 = size5.get_layer1(); GoGameNN size7(7, true); size7.scale_network(size5); std::vector<NeuralNet> size_7_layer1 = size7.get_layer1(); EXPECT_EQ(size_3_layer1[0], size_7_layer1[0]); EXPECT_EQ(size_5_layer1[1], size_7_layer1[1]); }
TEST(gogamenn_scaling_check, scale_3_5_7_check_segments) { GoGameNN size3(3, false); size3.initialize_random(); std::vector<NeuralNet> size_3_layer1 = size3.get_layer1(); GoGameNN size5(5, false); size5.scale_network(size3); std::vector<NeuralNet> size_5_layer1 = size5.get_layer1(); GoGameNN size7(7, false); size7.scale_network(size5); std::vector<NeuralNet> size_7_layer1 = size7.get_layer1(); for (unsigned int i = 0; i < 24; i++) { EXPECT_EQ(size_3_layer1[0], size_7_layer1[i]); } for (unsigned int i = 0; i < 9; i++) { EXPECT_EQ(size_5_layer1[9], size_7_layer1[25 + i]); } }
KBBGame::KBBGame() : KTopLevelWidget() { int i; setCaption(QString("KBlackBox ")+KBVERSION); menu = new KMenuBar(this, "menu"); QPopupMenu *game = new QPopupMenu; QPopupMenu *file = new QPopupMenu; sizesm = new QPopupMenu; ballsm = new QPopupMenu; QPopupMenu *help = new QPopupMenu; options = new QPopupMenu; CHECK_PTR( file ); CHECK_PTR( game ); CHECK_PTR( help ); CHECK_PTR( sizesm ); CHECK_PTR( ballsm ); CHECK_PTR( options ); CHECK_PTR( menu ); help->insertItem( trans->translate("&Help"), ID_HELP ); help->setAccel( CTRL+Key_H, ID_HELP ); help->insertSeparator(); help->insertItem( trans->translate("&About KBlackBox"), ID_ABOUT ); help->setAccel( CTRL+Key_A, ID_ABOUT ); help->insertItem( trans->translate("About &Qt"), ID_ABOUT_QT ); file->insertItem( trans->translate("&Quit"), ID_QUIT ); file->setAccel( CTRL+Key_Q, ID_QUIT ); game->insertItem( trans->translate("&New"), ID_NEW ); game->insertItem( trans->translate("&Give up"), ID_GIVEUP ); game->insertItem( trans->translate("&Done"), ID_DONE ); game->insertSeparator(); game->insertItem( trans->translate("&Resize"), ID_RESIZE ); sizes1id = sizesm->insertItem( " 8 x 8 ", this, SLOT(size1()) ); sizes2id = sizesm->insertItem( " 10 x 10 ", this, SLOT(size2()) ); sizes3id = sizesm->insertItem( " 12 x 12 ", this, SLOT(size3()) ); sizesm->setCheckable( TRUE ); balls1id = ballsm->insertItem( " 4 ", this, SLOT(balls1()) ); balls2id = ballsm->insertItem( " 6 ", this, SLOT(balls2()) ); balls3id = ballsm->insertItem( " 8 ", this, SLOT(balls3()) ); ballsm->setCheckable( TRUE ); options->insertItem( trans->translate("&Size"), sizesm ); options->insertItem( trans->translate("&Balls"), ballsm ); tut1id = options->insertItem( trans->translate("&Tutorial"), this, SLOT(tutorialSwitch()) ); options->setCheckable( TRUE ); connect( file, SIGNAL(activated(int)), SLOT(callBack(int)) ); connect( help, SIGNAL(activated(int)), SLOT(callBack(int)) ); connect( game, SIGNAL(activated(int)), SLOT(callBack(int)) ); menu->insertItem( trans->translate("&File"), file ); menu->insertItem( trans->translate("&Game"), game ); menu->insertItem( trans->translate("&Options"), options ); menu->insertSeparator(); menu->insertItem( trans->translate("&Help"), help ); menu->show(); setMenu( menu ); KIconLoader *loader = kapp->getIconLoader(); QPixmap **pix = new QPixmap*[NROFTYPES]; pix[0] = new QPixmap(); *pix[0] = loader->loadIcon( pFNames[0] ); if (!pix[0]->isNull()) { debug( "Pixmap \"%s\" loaded.", pFNames[0] ); for (i = 1; i < NROFTYPES; i++) { pix[i] = new QPixmap; *pix[i] = loader->loadIcon( pFNames[i] ); if (!pix[i]->isNull()) { debug( "Pixmap \"%s\" loaded.", pFNames[i] ); } else { pix[i] = pix[i-1]; pix[i]->detach(); debug( "Cannot find pixmap \"%s\". Using previous one.", pFNames[i] ); } } } else { debug( "Cannot find pixmap \"%s\". Pixmaps will not be loaded.", pFNames[0] ); delete pix[0]; delete pix; pix = NULL; } gr = new KBBGraphic( pix, this ); connect( gr, SIGNAL(inputAt(int,int,int)), this, SLOT(gotInputAt(int,int,int)) ); connect( this, SIGNAL(gameRuns(bool)), gr, SLOT(setInputAccepted(bool)) ); connect( gr, SIGNAL(endMouseClicked()), this, SLOT(gameFinished()) ); /* QToolTip::add( doneButton, trans->translate( "Click here when you think you placed all the balls.") ); */ QString tmps; stat = new KStatusBar( this ); tmps.sprintf( "aaaaaaaa" ); stat->insertItem( (const char *) tmps, SSCORE ); tmps.sprintf( "aaaaaaaaaaa" ); stat->insertItem( (const char *) tmps, SBALLS ); tmps.sprintf( "aaaaaaa" ); stat->insertItem( (const char *) tmps, SRUN ); tmps.sprintf( "aaaaaaaaaa" ); stat->insertItem( (const char *) tmps, SSIZE ); setStatusBar( stat ); tool = new KToolBar( this ); tool->insertButton( loader->loadIcon("exit.xpm"), ID_QUIT, TRUE, trans->translate("Quit") ); tool->insertButton( loader->loadIcon("reload.xpm"), ID_NEW, TRUE, trans->translate("New") ); tool->insertButton( loader->loadIcon("giveup.xpm"), ID_GIVEUP, TRUE, trans->translate("Give up") ); tool->insertButton( loader->loadIcon("done.xpm"), ID_DONE, TRUE, trans->translate("Done") ); tool->insertSeparator(); tool->insertButton( loader->loadIcon("help.xpm"), ID_HELP, TRUE, trans->translate("Help") ); connect( tool, SIGNAL(clicked(int)), SLOT(callBack(int)) ); addToolBar( tool ); tool->setBarPos( KToolBar::Top ); tool->show(); /* Game initializations */ running = FALSE; gameBoard = NULL; KConfig *kConf; int j; kConf = KApplication::getKApplication()->getConfig(); kConf->setGroup( "KBlackBox Setup" ); if (kConf->hasKey( "Balls" )) { i = kConf->readNumEntry( "Balls" ); balls = i; switch (i) { case 4: ballsm->setItemChecked( balls1id, TRUE ); break; case 6: ballsm->setItemChecked( balls2id, TRUE ); break; case 8: ballsm->setItemChecked( balls3id, TRUE ); break; } } else { balls = 4; ballsm->setItemChecked( balls1id, TRUE ); } if ((kConf->hasKey( "Width" )) && (kConf->hasKey( "Balls" ))) { i = kConf->readNumEntry( "Width" ); j = kConf->readNumEntry( "Height" ); gr->setSize( i+4, j+4 ); // +4 is the space for "lasers" and an edge... gameBoard = new RectOnArray( gr->numC(), gr->numR() ); switch (i) { case 8: sizesm->setItemChecked( sizes1id, TRUE ); break; case 10: sizesm->setItemChecked( sizes2id, TRUE ); break; case 12: sizesm->setItemChecked( sizes3id, TRUE ); break; } } else { gr->setSize( 8+4, 8+4 ); // +4 is the space for "lasers" and an edge... gameBoard = new RectOnArray( gr->numC(), gr->numR() ); sizesm->setItemChecked( sizes1id, TRUE ); } if (kConf->hasKey( "tutorial" )) { tutorial = (bool) kConf->readNumEntry( "tutorial" ); } else tutorial = FALSE; options->setItemChecked( tut1id, tutorial ); QString s, s1; int pos; setMinSize(); gameResize(); if (kConf->hasKey( "appsize" )) { s = kConf->readEntry( "appsize" ); debug("%s", (const char *) s); pos = s.find( 'x' ); s1 = s.right( s.length() - pos - 1 ); s.truncate( pos - 1 ); // debug("%s", (const char *) s); // debug("%s", (const char *) s1); resize( s.toInt(), s1.toInt() ); } setScore( 0 ); ballsPlaced = 0; updateStats(); setView( gr ); newGame(); }
void EDA_DRAW_FRAME::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_width ) { if( !m_showBorderAndTitleBlock ) return; const PAGE_INFO& pageInfo = GetPageSettings(); wxSize pageSize = pageInfo.GetSizeMils(); int ii, jj, xg, yg, ipas, gxpas, gypas; wxPoint pos; int refx, refy; EDA_Colors Color; wxString Line; Ki_WorkSheetData* WsItem; int scale = m_internalUnits / 1000; wxSize size( SIZETEXT * scale, SIZETEXT * scale ); #if defined(KICAD_GOST) wxSize size2( SIZETEXT * scale * 2, SIZETEXT * scale * 2); wxSize size3( SIZETEXT * scale * 3, SIZETEXT * scale * 3); wxSize size1_5( SIZETEXT * scale * 1.5, SIZETEXT * scale * 1.5); #endif wxSize size_ref( SIZETEXT_REF * scale, SIZETEXT_REF * scale ); wxString msg; int UpperLimit = VARIABLE_BLOCK_START_POSITION; int width = line_width; Color = RED; // if not printing, draw the page limits: if( !screen->m_IsPrinting && g_ShowPageLimits ) { GRSetDrawMode( DC, GR_COPY ); GRRect( m_canvas->GetClipBox(), DC, 0, 0, pageSize.x * scale, pageSize.y * scale, width, g_DrawBgColor == WHITE ? LIGHTGRAY : DARKDARKGRAY ); } GRSetDrawMode( DC, GR_COPY ); // Draw the border. // Upper left corner refx = pageInfo.GetLeftMarginMils(); refy = pageInfo.GetTopMarginMils(); // lower right corner xg = pageSize.x - pageInfo.GetRightMarginMils(); yg = pageSize.y - pageInfo.GetBottomMarginMils(); #if defined(KICAD_GOST) GRRect( m_canvas->GetClipBox(), DC, refx * scale, refy * scale, xg * scale, yg * scale, width, Color ); #else for( ii = 0; ii < 2; ii++ ) { GRRect( m_canvas->GetClipBox(), DC, refx * scale, refy * scale, xg * scale, yg * scale, width, Color ); refx += GRID_REF_W; refy += GRID_REF_W; xg -= GRID_REF_W; yg -= GRID_REF_W; } #endif // Draw the reference legends. refx = pageInfo.GetLeftMarginMils(); #if defined(KICAD_GOST) refy = pageSize.y - pageInfo.GetBottomMarginMils(); // Lower left corner for( WsItem = &WS_Segm1_LU; WsItem != NULL; WsItem = WsItem->Pnext ) { pos.x = ( refx - WsItem->m_Posx ) * scale; pos.y = ( refy - WsItem->m_Posy ) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_CADRE: break; case WS_PODPIS_LU: if( WsItem->m_Legende ) msg = WsItem->m_Legende; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_VERT, size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_BOTTOM, width, false, false ); break; case WS_SEGMENT_LU: xg = pageInfo.GetLeftMarginMils() - WsItem->m_Endx; yg = pageSize.y - pageInfo.GetBottomMarginMils() - WsItem->m_Endy; GRLine( m_canvas->GetClipBox(), DC, pos.x, pos.y, xg * scale, yg * scale, width, Color ); break; } } refy = pageInfo.GetBottomMarginMils(); // Left Top corner for( WsItem = &WS_Segm1_LT; WsItem != NULL; WsItem = WsItem->Pnext ) { pos.x = ( refx + WsItem->m_Posx ) * scale; pos.y = ( refy + WsItem->m_Posy ) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_SEGMENT_LT: xg = pageInfo.GetLeftMarginMils() + WsItem->m_Endx; yg = pageInfo.GetBottomMarginMils() + WsItem->m_Endy; GRLine( m_canvas->GetClipBox(), DC, pos.x, pos.y, xg * scale, yg * scale, width, Color ); break; } } #else // Upper left corner refy = pageInfo.GetTopMarginMils(); // lower right corner xg = pageSize.x - pageInfo.GetRightMarginMils(); yg = pageSize.y - pageInfo.GetBottomMarginMils(); ipas = ( xg - refx ) / PAS_REF; gxpas = ( xg - refx ) / ipas; for( ii = refx + gxpas, jj = 1; ipas > 0; ii += gxpas, jj++, ipas-- ) { Line.Printf( wxT( "%d" ), jj ); if( ii < xg - PAS_REF / 2 ) { GRLine( m_canvas->GetClipBox(), DC, ii * scale, refy * scale, ii * scale, ( refy + GRID_REF_W ) * scale, width, Color ); } DrawGraphicText( m_canvas, DC, wxPoint( ( ii - gxpas / 2 ) * scale, ( refy + GRID_REF_W / 2 ) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); if( ii < xg - PAS_REF / 2 ) { GRLine( m_canvas->GetClipBox(), DC, ii * scale, yg * scale, ii * scale, ( yg - GRID_REF_W ) * scale, width, Color ); } DrawGraphicText( m_canvas, DC, wxPoint( ( ii - gxpas / 2 ) * scale, ( yg - GRID_REF_W / 2) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } ipas = ( yg - refy ) / PAS_REF; gypas = ( yg - refy ) / ipas; for( ii = refy + gypas, jj = 0; ipas > 0; ii += gypas, jj++, ipas-- ) { if( jj < 26 ) Line.Printf( wxT( "%c" ), jj + 'A' ); else // I hope 52 identifiers are enought... Line.Printf( wxT( "%c" ), 'a' + jj - 26 ); if( ii < yg - PAS_REF / 2 ) { GRLine( m_canvas->GetClipBox(), DC, refx * scale, ii * scale, ( refx + GRID_REF_W ) * scale, ii * scale, width, Color ); } DrawGraphicText( m_canvas, DC, wxPoint( ( refx + GRID_REF_W / 2 ) * scale, ( ii - gypas / 2 ) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); if( ii < yg - PAS_REF / 2 ) { GRLine( m_canvas->GetClipBox(), DC, xg * scale, ii * scale, ( xg - GRID_REF_W ) * scale, ii * scale, width, Color ); } DrawGraphicText( m_canvas, DC, wxPoint( ( xg - GRID_REF_W / 2 ) * scale, ( ii - gxpas / 2 ) * scale ), Color, Line, TEXT_ORIENT_HORIZ, size_ref, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } #endif #if defined(KICAD_GOST) // lower right corner refx = pageSize.x - pageInfo.GetRightMarginMils(); refy = pageSize.y - pageInfo.GetBottomMarginMils(); if( screen->m_ScreenNumber == 1 ) { for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext ) { pos.x = (refx - WsItem->m_Posx) * scale; pos.y = (refy - WsItem->m_Posy) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_DATE: break; case WS_REV: break; case WS_KICAD_VERSION: break; case WS_PODPIS: if( WsItem->m_Legende ) msg = WsItem->m_Legende; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_SIZESHEET: break; case WS_IDENTSHEET: if( WsItem->m_Legende ) msg = WsItem->m_Legende; if( screen->m_NumberOfScreen > 1 ) msg << screen->m_ScreenNumber; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_SHEETS: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg << screen->m_NumberOfScreen; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_COMPANY_NAME: msg = GetTitleBlock().GetCompany(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size1_5, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_TITLE: msg = GetTitleBlock().GetTitle(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size1_5, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_COMMENT1: msg = GetTitleBlock().GetComment1(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size3, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); pos.x = (pageInfo.GetLeftMarginMils() + 1260) * scale; pos.y = (pageInfo.GetTopMarginMils() + 270) * scale; DrawGraphicText( m_canvas, DC, pos, Color, msg, 1800, size2, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_COMMENT2: msg = GetTitleBlock().GetComment2(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_COMMENT3: msg = GetTitleBlock().GetComment3(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_COMMENT4: msg = GetTitleBlock().GetComment4(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_UPPER_SEGMENT: case WS_LEFT_SEGMENT: WS_MostUpperLine.m_Posy = WS_MostUpperLine.m_Endy = WS_MostLeftLine.m_Posy = STAMP_OY; pos.y = ( refy - WsItem->m_Posy ) * scale; case WS_SEGMENT: xg = pageSize.x - pageInfo.GetRightMarginMils() - WsItem->m_Endx; yg = pageSize.y - pageInfo.GetBottomMarginMils() - WsItem->m_Endy; GRLine( m_canvas->GetClipBox(), DC, pos.x, pos.y, xg * scale, yg * scale, width, Color ); break; } } } else { for( WsItem = &WS_CADRE_D; WsItem != NULL; WsItem = WsItem->Pnext ) { pos.x = ( refx - WsItem->m_Posx ) * scale; pos.y = ( refy - WsItem->m_Posy ) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_CADRE: // Begin list number > 1 msg = GetTitleBlock().GetComment1(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size3, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); pos.x = (pageInfo.GetLeftMarginMils() + 1260) * scale; pos.y = (pageInfo.GetTopMarginMils() + 270) * scale; DrawGraphicText( m_canvas, DC, pos, Color, msg, 1800, size2, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_PODPIS_D: if( WsItem->m_Legende ) msg = WsItem->m_Legende; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_IDENTSHEET_D: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg << screen->m_ScreenNumber; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_LEFT_SEGMENT_D: pos.y = ( refy - WsItem->m_Posy ) * scale; case WS_SEGMENT_D: xg = pageSize.x - pageInfo.GetRightMarginMils() - WsItem->m_Endx; yg = pageSize.y - pageInfo.GetBottomMarginMils() - WsItem->m_Endy; GRLine( m_canvas->GetClipBox(), DC, pos.x, pos.y, xg * scale, yg * scale, width, Color ); break; } } } #else refx = pageSize.x - pageInfo.GetRightMarginMils() - GRID_REF_W; refy = pageSize.y - pageInfo.GetBottomMarginMils() - GRID_REF_W; for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext ) { pos.x = (refx - WsItem->m_Posx) * scale; pos.y = (refy - WsItem->m_Posy) * scale; msg.Empty(); switch( WsItem->m_Type ) { case WS_DATE: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetDate(); DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, true ); break; case WS_REV: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetRevision(); DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, GetPenSizeForBold( MIN( size.x, size.y ) ), false, true ); break; case WS_KICAD_VERSION: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += g_ProductName + wxGetApp().GetAppName(); msg += wxT( " " ) + GetBuildVersion(); DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_SIZESHEET: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += pageInfo.GetType(); DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_IDENTSHEET: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg << screen->m_ScreenNumber << wxT( "/" ) << screen->m_NumberOfScreen; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_FILENAME: { wxString fname, fext; wxFileName::SplitPath( screen->GetFileName(), (wxString*) NULL, &fname, &fext ); if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg << fname << wxT( "." ) << fext; DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); } break; case WS_FULLSHEETNAME: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetScreenDesc(); DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); break; case WS_COMPANY_NAME: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetCompany(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, GetPenSizeForBold( MIN( size.x, size.y ) ), false, true ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; case WS_TITLE: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetTitle(); DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, GetPenSizeForBold( MIN( size.x, size.y ) ), false, true ); break; case WS_COMMENT1: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetComment1(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; case WS_COMMENT2: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetComment2(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; case WS_COMMENT3: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetComment3(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; case WS_COMMENT4: if( WsItem->m_Legende ) msg = WsItem->m_Legende; msg += GetTitleBlock().GetComment4(); if( !msg.IsEmpty() ) { DrawGraphicText( m_canvas, DC, pos, Color, msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width, false, false ); UpperLimit = MAX( UpperLimit, WsItem->m_Posy + SIZETEXT ); } break; case WS_UPPER_SEGMENT: if( UpperLimit == 0 ) break; case WS_LEFT_SEGMENT: WS_MostUpperLine.m_Posy = WS_MostUpperLine.m_Endy = WS_MostLeftLine.m_Posy = UpperLimit; pos.y = (refy - WsItem->m_Posy) * scale; case WS_SEGMENT: xg = pageSize.x - GRID_REF_W - pageInfo.GetRightMarginMils() - WsItem->m_Endx; yg = pageSize.y - GRID_REF_W - pageInfo.GetBottomMarginMils() - WsItem->m_Endy; GRLine( m_canvas->GetClipBox(), DC, pos.x, pos.y, xg * scale, yg * scale, width, Color ); break; } } #endif }
int screen_1::Run(sf::RenderWindow &App) { hop.setBuffer(hopFile); trucked.setBuffer(truckedFile); dunked.setBuffer(dunkedFile); // Clock sf:: Clock clock; sf::Time time; sf::Time delay; // Plays Intro intro.play(); delay = intro.getDuration(); time = clock.getElapsedTime(); // Music while ( clock.getElapsedTime() <= delay ) { //cout << "NO"; } froggerTheme.setVolume(50); froggerTheme.play(); clock.restart(); sf::Event Event; bool Running = true; int sum = 0;// for log testing purposes int sum2 = 0; int sum3 = 0; int sum4 = 0; int sum5 = 0; int sum6 = 0; int sum7 = 0; int sum8 = 0; int sum9 = 0; int sum10 = 0; while (Running) { // Timer Rect and Clock double time = clock.getElapsedTime().asSeconds(); if(time >= 1.5) { timeRect.width = timeRect.width - 2.383; timer.setTextureRect(timeRect); clock.restart(); } if(timeRect.width <= 0) { frogOnLily1 = false; frogOnLily2 = false; frogOnLily3 = false; frogOnLily4 = false; frogOnLily5 = false; mainPlayer.setNumLives(3); rectSource.width = 115; life.setTextureRect(rectSource); occupied1.setPosition(-100, -100); occupied2.setPosition(-100, -100); occupied3.setPosition(-100, -100); occupied4.setPosition(-100, -100); occupied5.setPosition(-100, -100); froggerTheme.pause(); clock.restart(); timeRect.width = 143; timer.setTextureRect(timeRect); frogger.setPosition(320, 605); return 2; } // ********************************************************************* // Creating the objects of Object class for continuous movement // // Object(double posX, double posY, double speed) // ********************************************************************* // Trucks Object t1(130, 420,0.2 ); Object t2(550, 290, 0.2); // Cars Object c1(-50, 420, 0.3); Object c2(280, 289, 0.2); Object c3(0, 289, 0.2); // Short Logs Object sl1(0, 125, 0.2); Object sl2(200, 61, 0.3); Object sl3(300, 8, 0.4); // Long Logs Object l1(799, 8.3, 0.4); Object l2(500, 125, 0.2); // Sets object's direction t1.moveRight(truck); t2.moveLeft(truck2); c1.moveRight(car); c2.moveLeft(car2); c3.moveLeft(car3); sl1.moveRight(shortLog); sl2.moveLeft(shortLog2); sl3.moveRight(shortLog3); l1.moveRight(longLog); l2.moveRight(longLog2); // ********************************************************************* // The following rectangles are for collision detection // ********************************************************************* // Frog sf::RectangleShape rect; // Trucks sf::RectangleShape rect2; sf::RectangleShape rect3; // Cars sf::RectangleShape rect4; sf::RectangleShape rect5; sf::RectangleShape rect6; // Short Logs sf::RectangleShape rect7; sf::RectangleShape rect8; sf::RectangleShape rect9; // Long Logs sf::RectangleShape rect10; sf::RectangleShape rect11; // River sf::RectangleShape rect12; // Lilypads sf::RectangleShape rect13; sf::RectangleShape rect14; sf::RectangleShape rect15; sf::RectangleShape rect16; sf::RectangleShape rect17; // ********************************************************************* // Setting size of rectangles aka size(width, height) // ********************************************************************* // Frog sf::Vector2f size(40, 40); // Truck sf::Vector2f size2(120, 70); sf::Vector2f size3(120, 70); sf::Vector2f size4(95, 70); // Cars sf::Vector2f size5(95, 70); sf::Vector2f size6(95, 70); // Short Logs sf::Vector2f size7(85, 35); sf::Vector2f size8(85, 35); sf::Vector2f size9(85, 35); // Long Log sf::Vector2f size10(135, 35); sf::Vector2f size11(135, 35); // River sf::Vector2f size12(800, 230); // Lilypads sf::Vector2f size13(60, 60); sf::Vector2f size14(60, 60); sf::Vector2f size15(60, 60); sf::Vector2f size16(60, 60); sf::Vector2f size17(60, 60); // ********************************************************************* // Get pos of every object // ********************************************************************* // Trucks sf::Vector2f objectPos = truck.getPosition(); sf::Vector2f objectPos2 = truck2.getPosition(); // Cars sf::Vector2f objectPos3 = car.getPosition(); sf::Vector2f objectPos4 = car2.getPosition(); sf::Vector2f objectPos5 = car3.getPosition(); // Short Logs sf::Vector2f objectPos6 = shortLog.getPosition(); sf::Vector2f objectPos7 = shortLog2.getPosition(); sf::Vector2f objectPos8 = shortLog3.getPosition(); // Long Logs sf::Vector2f objectPos9 = longLog.getPosition(); sf::Vector2f objectPos10 = longLog2.getPosition(); // Lilypad sf::Vector2f objectPos11 = lillypad.getPosition(); sf::Vector2f objectPos12 = lillypad2.getPosition(); sf::Vector2f objectPos13 = lillypad3.getPosition(); sf::Vector2f objectPos14 = lillypad4.getPosition(); sf::Vector2f objectPos15 = lillypad5.getPosition(); // ********************************************************************* // Sets boundary settings // ********************************************************************* sf::Vector2f pos = frogger.getPosition(); // Frog rect.setPosition(pos.x + 30 , pos.y +10); rect.setSize(size); rect.setFillColor(sf::Color::Transparent); rect.setOutlineColor(sf::Color::Red); rect.setOutlineThickness(5); // Trucks rect2.setPosition(objectPos.x + 40, objectPos.y + 20); rect2.setSize(size2); rect2.setFillColor(sf::Color::Transparent); rect2.setOutlineColor(sf::Color::Red); rect2.setOutlineThickness(5); rect3.setPosition(objectPos2.x + 40, objectPos2.y + 60); rect3.setSize(size3); rect3.setFillColor(sf::Color::Transparent); rect3.setOutlineColor(sf::Color::Red); rect3.setOutlineThickness(5); // Cars rect4.setPosition(objectPos3.x + 45, objectPos3.y + 70); rect4.setSize(size4); rect4.setFillColor(sf::Color::Transparent); rect4.setOutlineColor(sf::Color::Red); rect4.setOutlineThickness(5); rect5.setPosition(objectPos4.x + 50, objectPos4.y + 70); rect5.setSize(size5); rect5.setFillColor(sf::Color::Transparent); rect5.setOutlineColor(sf::Color::Red); rect5.setOutlineThickness(5); rect6.setPosition(objectPos5.x + 50, objectPos5.y + 70); rect6.setSize(size6); rect6.setFillColor(sf::Color::Transparent); rect6.setOutlineColor(sf::Color::Red); rect6.setOutlineThickness(5); // Short Logs rect7.setPosition(objectPos6.x + 30, objectPos6.y + 80); rect7.setSize(size7); rect7.setFillColor(sf::Color::Transparent); rect7.setOutlineColor(sf::Color::Red); rect7.setOutlineThickness(5); rect8.setPosition(objectPos7.x + 30, objectPos7.y + 80); rect8.setSize(size8); rect8.setFillColor(sf::Color::Transparent); rect8.setOutlineColor(sf::Color::Red); rect8.setOutlineThickness(5); rect9.setPosition(objectPos8.x + 30, objectPos8.y + 80); rect9.setSize(size9); rect9.setFillColor(sf::Color::Transparent); rect9.setOutlineColor(sf::Color::Red); rect9.setOutlineThickness(5); // Long Logs rect10.setPosition(objectPos9.x + 35, objectPos9.y + 70); rect10.setSize(size10); rect10.setFillColor(sf::Color::Transparent); rect10.setOutlineColor(sf::Color::Red); rect10.setOutlineThickness(5); rect11.setPosition(objectPos10.x + 35, objectPos10.y + 70); rect11.setSize(size11); rect11.setFillColor(sf::Color::Transparent); rect11.setOutlineColor(sf::Color::Red); rect11.setOutlineThickness(5); // River rect12.setPosition(0, 0); rect12.setSize(size12); rect12.setFillColor(sf::Color::Transparent); rect12.setOutlineColor(sf::Color::Red); rect12.setOutlineThickness(5); // Lilypads rect13.setPosition(objectPos11.x + 30, objectPos11.y+40); rect13.setSize(size13); rect13.setFillColor(sf::Color::Transparent); rect13.setOutlineColor(sf::Color::Red); rect13.setOutlineThickness(5); rect14.setPosition(objectPos12.x + 30 , objectPos12.y+40); rect14.setSize(size14); rect14.setFillColor(sf::Color::Transparent); rect14.setOutlineColor(sf::Color::Red); rect14.setOutlineThickness(5); rect15.setPosition(objectPos13.x + 30, objectPos13.y+40); rect15.setSize(size15); rect15.setFillColor(sf::Color::Transparent); rect15.setOutlineColor(sf::Color::Red); rect15.setOutlineThickness(5); rect16.setPosition(objectPos14.x + 30 , objectPos14.y+40); rect16.setSize(size16); rect16.setFillColor(sf::Color::Transparent); rect16.setOutlineColor(sf::Color::Red); rect16.setOutlineThickness(5); rect17.setPosition(objectPos15.x + 30 , objectPos15.y+40); rect17.setSize(size17); rect17.setFillColor(sf::Color::Transparent); rect17.setOutlineColor(sf::Color::Red); rect17.setOutlineThickness(5); // ********************************************************************* // Frogger Hit Truck 1 // ********************************************************************* if (rect.getGlobalBounds().intersects(rect2.getGlobalBounds())) { froggerTheme.pause(); trucked.play(); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); mainPlayer.setIsHit(true); rectSource.width -= 38.3; life.setTextureRect(rectSource); froggerTheme.play(); //death.setPosition(-100,-100); } // ********************************************************************* // Frogger Hit Truck 2 // ********************************************************************* if (rect.getGlobalBounds().intersects(rect3.getGlobalBounds())) { froggerTheme.pause(); trucked.play(); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); mainPlayer.setIsHit(true); rectSource.width -= 38.3; life.setTextureRect(rectSource); sf::Vector2f pos = frogger.getPosition(); death.setPosition(pos); froggerTheme.play(); death.setPosition(-100,-100); } // ********************************************************************* // Frogger Hit Car 1 // ********************************************************************* if (rect.getGlobalBounds().intersects(rect4.getGlobalBounds())) { froggerTheme.pause(); trucked.play(); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); mainPlayer.setIsHit(true); rectSource.width -= 38.3; life.setTextureRect(rectSource); sf::Vector2f pos = frogger.getPosition(); death.setPosition(pos); froggerTheme.play(); death.setPosition(-100,-100); } // ********************************************************************* // Frogger Hit Car 2 // ********************************************************************* if (rect.getGlobalBounds().intersects(rect5.getGlobalBounds())) { froggerTheme.pause(); trucked.play(); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); mainPlayer.setIsHit(true); rectSource.width -= 38.3; life.setTextureRect(rectSource); sf::Vector2f pos = frogger.getPosition(); death.setPosition(pos); froggerTheme.play(); death.setPosition(-100,-100); } // ********************************************************************* // Frogger Hit Car 3 // ********************************************************************* if (rect.getGlobalBounds().intersects(rect6.getGlobalBounds())) { froggerTheme.pause(); trucked.play(); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); mainPlayer.setIsHit(true); rectSource.width -= 38.3; life.setTextureRect(rectSource); sf::Vector2f pos = frogger.getPosition(); death.setPosition(pos); froggerTheme.play(); death.setPosition(-100,-100); } // ********************************************************************* // Below this line will be log collision checking // ********************************************************************* if (rect.getGlobalBounds().intersects(rect7.getGlobalBounds())) { frogger.setPosition(objectPos6.x + 45 + sum2 , objectPos6.y + 80 + sum); isOnLog = true; } else { isOnLog = false; sum = 0; sum2 = 0; } if (rect.getGlobalBounds().intersects(rect8.getGlobalBounds())) { frogger.setPosition(objectPos7.x + 45 + sum4, objectPos7.y + 80 + sum3); isOnLog2 = true; } else { isOnLog2 = false; sum3 = 0; sum4 = 0; } if (rect.getGlobalBounds().intersects(rect9.getGlobalBounds())) { frogger.setPosition(objectPos8.x + 45+sum6, objectPos8.y + 80+sum5); isOnLog3 = true; } else { isOnLog3 = false; sum5 = 0; sum6 = 0; } if (rect.getGlobalBounds().intersects(rect10.getGlobalBounds())) { frogger.setPosition(objectPos9.x + 45 + sum8, objectPos9.y + 70+ sum7); isOnLog4 = true; } else { isOnLog4 = false; sum7 = 0; sum8 = 0; } if (rect.getGlobalBounds().intersects(rect11.getGlobalBounds())) { frogger.setPosition(objectPos10.x + 45+ sum10, objectPos10.y + 70+sum9); isOnLog5 = true; } else { isOnLog5 = false; sum9 = 0; sum10 = 0; } // ********************************************************************* // Below this line will be lily collision checking // ********************************************************************* if (rect.getGlobalBounds().intersects(rect13.getGlobalBounds())) { isOnLily = true; if (frogOnLily1 == false) { score += 50; } frogOnLily1 = true; sf::Vector2f lilyPos = rect13.getPosition(); occupied1.setPosition(lilyPos); } if (rect.getGlobalBounds().intersects(rect14.getGlobalBounds())) { isOnLily = true; if (frogOnLily2 == false) { score += 50; } frogOnLily2 = true; sf::Vector2f lilyPos = rect14.getPosition(); occupied2.setPosition(lilyPos); } if (rect.getGlobalBounds().intersects(rect15.getGlobalBounds())) { isOnLily = true; if (frogOnLily3 == false) { score += 50; } frogOnLily3 = true; sf::Vector2f lilyPos = rect15.getPosition(); occupied3.setPosition(lilyPos); } if (rect.getGlobalBounds().intersects(rect16.getGlobalBounds())) { isOnLily = true; if (frogOnLily4 == false) { score += 50; } frogOnLily4 = true; sf::Vector2f lilyPos = rect16.getPosition(); occupied4.setPosition(lilyPos); } if (rect.getGlobalBounds().intersects(rect17.getGlobalBounds())) { isOnLily = true; if (frogOnLily5 == false) { score += 50; } frogOnLily5 = true; sf::Vector2f lilyPos = rect17.getPosition(); occupied5.setPosition(lilyPos); } // ********************************************************************* // Checks if frogger is on log AND goes outside screen boundaries // if so frogger dies // ********************************************************************* sf::Vector2f location = frogger.getPosition(); // Checks if frogger went out of bounds if (rect.getGlobalBounds().intersects(rect12.getGlobalBounds())) { if ((isOnLog || isOnLog2 || isOnLog3 || isOnLog4 || isOnLog5) && (location.x >= 740 || location.x < -40)) { mainPlayer.setIsHit(true); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); rectSource.width -= 38.3; life.setTextureRect(rectSource); } } // Checks if frogger is on the logs not the water if (rect.getGlobalBounds().intersects(rect12.getGlobalBounds())) { if (isOnLog || isOnLog2 || isOnLog3 || isOnLog4 || isOnLog5) { //this frogger is on the logs not the water } else { froggerTheme.pause(); dunked.play(); froggerTheme.play(); mainPlayer.setIsHit(true); lives = mainPlayer.getNumLives(); mainPlayer.setNumLives(lives - 1); rectSource.width -= 38.3; life.setTextureRect(rectSource); } } // Checks if the frog has landed on a lilypad if (isOnLily || isOnLily2 || isOnLily3 || isOnLily4 || isOnLily5) { // the frog has landed on the lily pad froggerLanded = true; } // ********************************************************************* // Checks if the frog has landed on all 5 lilypads if so you win // ********************************************************************* if (frogOnLily1 && frogOnLily2 && frogOnLily3 && frogOnLily4 && frogOnLily5) { score += 10000; frogOnLily1 = false; frogOnLily2 = false; frogOnLily3 = false; frogOnLily4 = false; frogOnLily5 = false; mainPlayer.setNumLives(3); rectSource.width = 115; life.setTextureRect(rectSource); occupied1.setPosition(-100, -100); occupied2.setPosition(-100, -100); occupied3.setPosition(-100, -100); occupied4.setPosition(-100, -100); occupied5.setPosition(-100, -100); froggerTheme.pause(); clock.restart(); timeRect.width = 143; timer.setTextureRect(timeRect); frogger.setPosition(320, 605); return 2; } while (App.pollEvent(Event)) { // Window closed if (Event.type == sf::Event::Closed) { return (-1); } // ********************************************************************* // LEFT // ********************************************************************* if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { if (isOnLog) { sum2 = (sum2 + (20 * -1)); } if (isOnLog2) { sum4 = (sum4 + (20 * -1)); } if (isOnLog3) { sum6 = (sum6 + (20 * -1)); } if (isOnLog4) { sum8 = (sum8 + (20 * -1)); } if (isOnLog5) { sum10 = (sum10 + (20 * -1)); } sf::Vector2f pos = frogger.getPosition(); if (pos.x < 0) { frogger.move(0, 0); } else { if (rectSourceSprite.left != 216) { rectSourceSprite.left = 216; rectSourceSprite.width = 55; frogger.setTextureRect(rectSourceSprite); } score += 10; froggerTheme.setVolume(0); hop.play(); frogger.move(-40, 0); froggerTheme.setVolume(50); } } // ********************************************************************* // RIGHT // ********************************************************************* if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { if (isOnLog) { sum2 = (sum2 + (20)); } if (isOnLog2) { sum4 = (sum4 + (20)); } if (isOnLog3) { sum6 = (sum6 + (20)); } if (isOnLog4) { sum8 = (sum8 + (20)); } if (isOnLog5) { sum10 = (sum10 + (20)); } sf::Vector2f pos = frogger.getPosition(); if (pos.x >= 640) { frogger.move(0, 0); } else { if (rectSourceSprite.left != 89) { rectSourceSprite.left = 89; rectSourceSprite.width = 60; frogger.setTextureRect(rectSourceSprite); } score += 10; froggerTheme.setVolume(0); hop.play(); frogger.move(40, 0); froggerTheme.setVolume(50); } } // ********************************************************************* // UP // ********************************************************************* if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { if (isOnLog) { sum = (sum + (20 * -1)); } if (isOnLog2) { sum3 = (sum3 + (20 * -1)); } if (isOnLog3) { sum5 = (sum5 + (20 * -1)); } if (isOnLog4) { sum7 = (sum7 + (20 * -1)); } if (isOnLog5) { sum9 = (sum9 + (20 * -1)); } if (pos.y <= -35) { frogger.move(0, 0); } else { if (rectSourceSprite.left != 0) { rectSourceSprite.left = 0; rectSourceSprite.width = 89; frogger.setTextureRect(rectSourceSprite); } score += 10; froggerTheme.setVolume(0); hop.play(); frogger.move(0, -40); froggerTheme.setVolume(50); } } // ********************************************************************* // DOWN // ********************************************************************* if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { if (isOnLog) { sum = (sum + 20); } if (isOnLog2) { sum3 = (sum3 + 20); } if (isOnLog3) { sum5 = (sum5 + 20); } if (isOnLog4) { sum7 = (sum7 + 20); } if (isOnLog5) { sum9 = (sum9 + 20); } sf::Vector2f pos = frogger.getPosition(); if (pos.y >= 650) { frogger.move(0, 0); } else { if (rectSourceSprite.left != 149) { rectSourceSprite.left = 149; rectSourceSprite.width = 67; frogger.setTextureRect(rectSourceSprite); } score += 10; froggerTheme.setVolume(0); hop.play(); frogger.move(0, 40); froggerTheme.setVolume(50); } } } // ********************************************************************* // Checks if player has been hit // ********************************************************************* if (mainPlayer.getIsHit() == true) { cout << " Number of lives" << mainPlayer.getNumLives() << endl; mainPlayer.setIsHit(false); rectSourceSprite.left = 0; rectSourceSprite.width = 89; frogger.setTextureRect(rectSourceSprite); frogger.setPosition(320, 605); } // ********************************************************************* // Checks if player landed on lily // ********************************************************************* if (froggerLanded == true) { froggerLanded = false; rectSourceSprite.left = 0; rectSourceSprite.width = 89; frogger.setTextureRect(rectSourceSprite); frogger.setPosition(320, 605); isOnLily = false; isOnLily2 = false; isOnLily3 = false; isOnLily4 = false; isOnLily5 = false; } // ********************************************************************* // Checks if player has run out of lives // ********************************************************************* if (mainPlayer.getNumLives() < 1) { frogOnLily1 = false; frogOnLily2 = false; frogOnLily3 = false; frogOnLily4 = false; frogOnLily5 = false; mainPlayer.setNumLives(3); rectSource.width = 115; life.setTextureRect(rectSource); occupied1.setPosition(-100, -100); occupied2.setPosition(-100, -100); occupied3.setPosition(-100, -100); occupied4.setPosition(-100, -100); occupied5.setPosition(-100, -100); froggerTheme.pause(); clock.restart(); timeRect.width = 143; timer.setTextureRect(timeRect); frogger.setPosition(320, 605); return 2; } App.clear(sf::Color(0, 0, 0, 0)); //Drawing App.draw(background); App.draw(car2); App.draw(car3); App.draw(truck2); App.draw(truck); App.draw(car); App.draw(longLog); App.draw(longLog2); App.draw(shortLog); App.draw(shortLog2); App.draw(shortLog3); App.draw(lillypad); App.draw(lillypad2); App.draw(lillypad3); App.draw(lillypad4); App.draw(lillypad5); App.draw(life); App.draw(timer); App.draw(frogger); App.draw(occupied1); App.draw(occupied2); App.draw(occupied3); App.draw(occupied4); App.draw(occupied5); // ********************************************************************* // The following are for testing purposes only // Draws the boundary box // ********************************************************************* App.draw(rect); App.draw(rect2); App.draw(rect3); App.draw(rect4); App.draw(rect5); App.draw(rect6); App.draw(rect7); App.draw(rect8); App.draw(rect9); App.draw(rect10); App.draw(rect11); App.draw(rect12); App.draw(rect13); App.draw(rect14); App.draw(rect15); App.draw(rect16); App.draw(rect17); App.display(); } //Never reaching this point normally, but just in case, exit the application return -1; }