QuickGUI box selection fix
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
		
							parent
							
								
									d8bb3d6dd9
								
							
						
					
					
						commit
						c293288908
					
				| @ -1,17 +1,19 @@ | ||||
| #include <iostream> | ||||
| #include <fstream> | ||||
| #include <sstream> | ||||
| #include <vector> | ||||
| #include <algorithm> | ||||
| #include "pixelGameEngine.h" | ||||
| #include "olcPGEX_QuickGUI.h" | ||||
| #include <set> | ||||
| 
 | ||||
| std::string slurp(std::ifstream& in) { | ||||
| using namespace olc; | ||||
| 
 | ||||
| // Override base class with your custom functionality
 | ||||
| class ChampionsLeaguePointSolver : public olc::PixelGameEngine | ||||
| { | ||||
|     std::string slurp(std::ifstream& in) { | ||||
|         std::ostringstream sstr; | ||||
|         sstr << in.rdbuf(); | ||||
|         return sstr.str(); | ||||
| } | ||||
|     } | ||||
| 
 | ||||
| struct ScoreData{ | ||||
|     struct ScoreData{ | ||||
|         int difficulty=0; | ||||
|         std::string song; | ||||
|         int totalEX=0; | ||||
| @ -23,19 +25,19 @@ struct ScoreData{ | ||||
|             os<<data.str(); | ||||
|             return os; | ||||
|         } | ||||
| }; | ||||
|     }; | ||||
| 
 | ||||
| std::string GetNext(int&marker,std::string str){ | ||||
|     std::string GetNext(int&marker,std::string str){ | ||||
|         int originalMarker=marker; | ||||
|         marker=str.find_first_of(',',originalMarker)+1; | ||||
|         return str.substr(originalMarker,marker-1); | ||||
| }; | ||||
|     }; | ||||
| 
 | ||||
| struct TestCase{ | ||||
|     struct TestCase{ | ||||
|         int p1Amt,p2Amt,p3Amt; | ||||
| }; | ||||
|     }; | ||||
| 
 | ||||
| struct SongCombinations{ | ||||
|     struct SongCombinations{ | ||||
|         std::vector<std::pair<int,int>>p1; //Index to song followed by EX of song.
 | ||||
|         std::vector<std::pair<int,int>>p2; | ||||
|         std::vector<std::pair<int,int>>p3; | ||||
| @ -44,57 +46,10 @@ struct SongCombinations{ | ||||
|         std::set<int>p3Picked; | ||||
|         int totalEX=0; | ||||
|         int remainingA,remainingB,remainingC; | ||||
| }; | ||||
| 
 | ||||
| int main(){ | ||||
|     }; | ||||
|     std::vector<ScoreData>dataA,dataB; | ||||
|     std::vector<std::pair<int,int>>player1Score,player2Score,player3Score; | ||||
|     std::ifstream file("team2"); | ||||
|     std::string line; | ||||
|     //First two lines are garbage data.
 | ||||
|     std::getline(file,line); | ||||
|     std::getline(file,line); | ||||
|     for(int i=0;i<12;i++){ | ||||
|         std::getline(file,line); | ||||
|         int marker=0; | ||||
|         ScoreData dat{ | ||||
|             stoi(GetNext(marker,line)), | ||||
|             GetNext(marker,line), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line))}; | ||||
|         player1Score.push_back(std::pair<int,int>{dat.ex1,0}); | ||||
|         player2Score.push_back(std::pair<int,int>{dat.ex2,0}); | ||||
|         player3Score.push_back(std::pair<int,int>{dat.ex3,0}); | ||||
|         dataA.push_back(dat); | ||||
|     } | ||||
|     //Two more lines of garbage data.
 | ||||
|     std::getline(file,line); | ||||
|     std::getline(file,line); | ||||
|     for(int i=0;i<12;i++){ | ||||
|         std::getline(file,line); | ||||
|         int marker=0; | ||||
|         ScoreData dat{ | ||||
|             stoi(GetNext(marker,line)), | ||||
|             GetNext(marker,line), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line)), | ||||
|             stoi(GetNext(marker,line))}; | ||||
|         player1Score[i].second=dat.ex1; | ||||
|         player2Score[i].second=dat.ex2; | ||||
|         player3Score[i].second=dat.ex3; | ||||
|         dataB.push_back(dat); | ||||
|     } | ||||
|     std::cout<<"File Contents:"<<std::endl<<std::endl; | ||||
|     for(auto&list:{dataA,dataB}){ | ||||
|         for(auto&dat:list){ | ||||
|             std::cout<<dat<<std::endl; | ||||
|         } | ||||
|     } | ||||
|     std::cout<<"==================="<<std::endl; | ||||
| 
 | ||||
|     void Evaluate(){ | ||||
|         std::vector<TestCase>cases; | ||||
|         for(int i=0;i<5;i++){ | ||||
|             for(int j=0;j<5;j++){ | ||||
| @ -262,4 +217,96 @@ int main(){ | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     public: | ||||
|         struct SongElement{ | ||||
|             SongElement(QuickGUI::Manager&manager,std::string songName,vf2d pos){ | ||||
|                 label=new QuickGUI::Label(manager,songName,pos,{164,12}); | ||||
|                 p1Score=new QuickGUI::TextBox(manager,"",pos+vf2d{192,0},{36,12}); | ||||
|                 p2Score=new QuickGUI::TextBox(manager,"",pos+vf2d{192+42*1,0},{36,12}); | ||||
|                 p3Score=new QuickGUI::TextBox(manager,"",pos+vf2d{192+42*2,0},{36,12}); | ||||
|             } | ||||
|             QuickGUI::Label*label; | ||||
|             QuickGUI::TextBox*p1Score; | ||||
|             QuickGUI::TextBox*p2Score; | ||||
|             QuickGUI::TextBox*p3Score; | ||||
|         }; | ||||
|         QuickGUI::Manager gui; | ||||
|         std::vector<SongElement>songs; | ||||
| 
 | ||||
|         ChampionsLeaguePointSolver() | ||||
|         { | ||||
|             // Name your application
 | ||||
|             sAppName = "Champions League Point Solver"; | ||||
|         } | ||||
| 
 | ||||
|     public: | ||||
|         bool OnUserCreate() override | ||||
|         { | ||||
|             std::ifstream file("assets/team2"); | ||||
|             std::string line; | ||||
|             //First two lines are garbage data.
 | ||||
|             std::getline(file,line); | ||||
|             std::getline(file,line); | ||||
|             for(int i=0;i<12;i++){ | ||||
|                 std::getline(file,line); | ||||
|                 int marker=0; | ||||
|                 ScoreData dat{ | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     GetNext(marker,line), | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     stoi(GetNext(marker,line))}; | ||||
|                 player1Score.push_back(std::pair<int,int>{dat.ex1,0}); | ||||
|                 player2Score.push_back(std::pair<int,int>{dat.ex2,0}); | ||||
|                 player3Score.push_back(std::pair<int,int>{dat.ex3,0}); | ||||
|                 dataA.push_back(dat); | ||||
|                 songs.push_back(SongElement{gui,dat.song.substr(0,dat.song.find(',')),{4.f,2.f+12*i+16}}); | ||||
|             } | ||||
|             //Two more lines of garbage data.
 | ||||
|             std::getline(file,line); | ||||
|             std::getline(file,line); | ||||
|             for(int i=0;i<12;i++){ | ||||
|                 std::getline(file,line); | ||||
|                 int marker=0; | ||||
|                 ScoreData dat{ | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     GetNext(marker,line), | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     stoi(GetNext(marker,line)), | ||||
|                     stoi(GetNext(marker,line))}; | ||||
|                 player1Score[i].second=dat.ex1; | ||||
|                 player2Score[i].second=dat.ex2; | ||||
|                 player3Score[i].second=dat.ex3; | ||||
|                 dataB.push_back(dat); | ||||
|                 songs.push_back(SongElement{gui,dat.song.substr(0,dat.song.find(',')),{4.f,2.f+12*(i+13)+16}}); | ||||
|             } | ||||
|             std::cout<<"File Contents:"<<std::endl<<std::endl; | ||||
|             for(auto&list:{dataA,dataB}){ | ||||
|                 for(auto&dat:list){ | ||||
|                     std::cout<<dat<<std::endl; | ||||
|                 } | ||||
|             } | ||||
|             std::cout<<"==================="<<std::endl; | ||||
| 
 | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         bool OnUserUpdate(float fElapsedTime) override | ||||
|         { | ||||
|             Clear(VERY_DARK_CYAN); | ||||
|             gui.Update(this); | ||||
|             gui.Draw(this); | ||||
|             return true; | ||||
|         } | ||||
| }; | ||||
| 
 | ||||
| int main() | ||||
| { | ||||
| 	ChampionsLeaguePointSolver solver; | ||||
| 	if (solver.Construct(320, 320, 4, 4)) | ||||
| 		solver.Start(); | ||||
| 	return 0; | ||||
| } | ||||
							
								
								
									
										28
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.data
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.data
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| "Scores due by September 24th, 23:59 PST",,,,,,, | ||||
| Set A,,Total EX,NICONII,SALSA,YONCETAI,, | ||||
| 12,Sola,1287,1218,1155,980,,0 | ||||
| 13,Deadball de homerun,1323,1225,1047,994,,0 | ||||
| 13,Star Trail,1443,1339,1231,978,,0 | ||||
| 14,Draw the Savage,1425,1298,1294,1039,,0 | ||||
| 14,IMANOGUILTS,1719,1586,1336,993,,0 | ||||
| 15,Astrogazer,1782,1618,0,0,,0 | ||||
| 15,Kouen,1905,1772,0,0,,0 | ||||
| 16,The World Ends Now,1917,1730,0,0,,0 | ||||
| 16,S!ck,2118,1790,1563,0,,0 | ||||
| 17,Magnetic,2193,1815,0,0,,0 | ||||
| 17,Unfinished Steam Maiden,2262,1885,0,0,,0 | ||||
| 18,Nageki no ki,2370,1978,0,0,,0 | ||||
| ,,,,,,,0 | ||||
| Set B,,,,,,,0 | ||||
| 12,Towards the TOWER,1104,1046,1023,879,,0 | ||||
| 13,Xenon,1158,1088,1042,913,,0 | ||||
| 13,DeStRuCtIvE FoRcE,1299,1218,1102,833,,0 | ||||
| 14,Diamond Night,1359,1258,1169,919,,0 | ||||
| 14,Nightbird lost wing,1539,1395,1220,674,,0 | ||||
| 15,Sand Blow,1668,1466,0,0,,0 | ||||
| 15,SILVER DREAM,1668,1500,1242,0,,0 | ||||
| 16,Another Phase,1767,1547,0,0,,0 | ||||
| 16,Blew My Mind,1803,1464,0,0,,0 | ||||
| 17,Emera,1851,1531,0,0,,0 | ||||
| 17,JOMANDA,2004,1556,0,0,,0 | ||||
| 18,PARANOiA Revolution,2097,1582,0,0,,0 | ||||
							
								
								
									
										75
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| 
 | ||||
| <!doctype html> | ||||
| <html lang="en-us"> | ||||
|     <head> | ||||
|         <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
|         <meta charset="utf-8"> | ||||
|         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||
|         <title>Emscripten-Generated Code</title> | ||||
|         <style> | ||||
| html,body {	width: 100%; height: 100%; } | ||||
| body { font-family: arial; margin: 0; padding: 0; background: #000; } | ||||
| 
 | ||||
| .emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; } | ||||
| div.emscripten_border { border: none; } | ||||
| 
 | ||||
| /* the canvas *must not* have any border or padding, or mouse coords will be wrong */ | ||||
| canvas.emscripten { border: 0px none; background-color: black; } | ||||
|         </style> | ||||
|     </head> | ||||
|     <body> | ||||
|         <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas> | ||||
|         <script type='text/javascript'> | ||||
| var Module = { | ||||
|     preRun: [], | ||||
|     postRun: [], | ||||
|     canvas: (function() { | ||||
|         var canvas = document.getElementById('canvas'); | ||||
| 
 | ||||
|         // As a default initial behavior, pop up an alert when webgl context is lost. To make your | ||||
|         // application robust, you may want to override this behavior before shipping! | ||||
|         // See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2 | ||||
|         canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false); | ||||
| 
 | ||||
|         return canvas; | ||||
|     })(), | ||||
| }; | ||||
|         </script> | ||||
|         <script async type="text/javascript" src="ChampionsLeaguePointSolver.js"></script> | ||||
|         <script type="text/javascript"> | ||||
| Module.canvas.addEventListener("resize", (e) => { | ||||
| 
 | ||||
|     var viewWidth = e.detail.width; | ||||
|     var viewHeight = e.detail.width / Module._olc_WindowAspectRatio; | ||||
| 
 | ||||
|     if(viewHeight > e.detail.height) | ||||
|     { | ||||
|         viewHeight = e.detail.height; | ||||
|         viewWidth = e.detail.height * Module._olc_WindowAspectRatio; | ||||
|     } | ||||
| 
 | ||||
|     // update dom attributes | ||||
|     Module.canvas.setAttribute("width", viewWidth); | ||||
|     Module.canvas.setAttribute("height", viewHeight); | ||||
| 
 | ||||
|     var top = (e.detail.height - viewHeight) / 2; | ||||
|     var left = (e.detail.width - viewWidth) / 2; | ||||
| 
 | ||||
|     // update styles | ||||
|     Module.canvas.style.position = "fixed"; | ||||
|     Module.canvas.style.top = top.toString() + "px"; | ||||
|     Module.canvas.style.left = left.toString() + "px"; | ||||
|     Module.canvas.style.width = ""; | ||||
|     Module.canvas.style.height = ""; | ||||
| 
 | ||||
|     // trigger PGE update | ||||
|     Module._olc_PGE_UpdateWindowSize(viewWidth, viewHeight); | ||||
| 
 | ||||
|     // ensure canvas has focus | ||||
|     Module.canvas.focus(); | ||||
|     e.preventDefault(); | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										1
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.js
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.wasm
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ChallengeLeaguePointSolver/ChampionsLeaguePointSolver.wasm
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -10,11 +10,11 @@ Set A,,Total EX,NICONII,SALSA,YONCETAI,, | ||||
| 16,The World Ends Now,1917,1730,0,0,,0 | ||||
| 16,S!ck,2118,1790,1563,0,,0 | ||||
| 17,Magnetic,2193,1815,0,0,,0 | ||||
| 17,Mikansei no jouki kudou otome,2262,1885,0,0,,0 | ||||
| 17,Unfinished Steam Maiden,2262,1885,0,0,,0 | ||||
| 18,Nageki no ki,2370,1978,0,0,,0 | ||||
| ,,,,,,,0 | ||||
| Set B,,,,,,,0 | ||||
| 12,Towards the Tower,1104,1046,1023,879,,0 | ||||
| 12,Towards the TOWER,1104,1046,1023,879,,0 | ||||
| 13,Xenon,1158,1088,1042,913,,0 | ||||
| 13,DeStRuCtIvE FoRcE,1299,1218,1102,833,,0 | ||||
| 14,Diamond Night,1359,1258,1169,919,,0 | ||||
| @ -1,211 +0,0 @@ | ||||
| 
 | ||||
| #include "pixelGameEngine.h" | ||||
| 
 | ||||
| //THIS IS WRITTEN USING OLC GPE, CHECK OUT onelonecoder.com
 | ||||
| //Or else
 | ||||
| class Snake : public olc::PixelGameEngine { | ||||
| public: | ||||
| 	Snake() { | ||||
| 		sAppName = "Snake"; | ||||
| 	} | ||||
| 
 | ||||
| 	enum direction { STOP, LEFT, RIGHT, DOWN, UP }; | ||||
| 	direction dir; | ||||
| 	//Game variables
 | ||||
| 	int score; | ||||
| 	//Snake variables
 | ||||
| 	float SnakeXPos, SnakeYPos; | ||||
| 	float tailUpdateTimer=0; | ||||
| 	int tailX[1000], tailY[1000], tailLength = 0; | ||||
| 	float x, y; | ||||
| 	//Target variables
 | ||||
| 	int fruit1X, fruit1Y, fruit2X, fruit2Y; | ||||
| 	bool fruit1 = false, fruit2 = false; | ||||
| 	bool GameOver; | ||||
| 
 | ||||
| 	void SnakeDead() { | ||||
| 		if (GameOver == true) { | ||||
| 			Clear(olc::BLACK); | ||||
| 			DrawString(ScreenWidth() - ((ScreenWidth() / 2) + (ScreenWidth() / 2.8)), ScreenHeight() / 2 - 5, "Game Over", olc::RED, 1); | ||||
| 		} | ||||
| 	} | ||||
| 	void BorderCollisionCheck() { | ||||
| 		if (SnakeXPos <= 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 		if (SnakeXPos >= ScreenWidth() - 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 		if (SnakeYPos <= 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 		if (SnakeYPos >= ScreenHeight() - 3) { | ||||
| 			GameOver = true; | ||||
| 			SnakeDead(); | ||||
| 		} | ||||
| 	} | ||||
| 	void userInput(float speed) { | ||||
| 		if (GetKey(olc::Key::UP).bPressed && dir != DOWN) { | ||||
| 			dir = UP; | ||||
| 		} | ||||
| 		if (GetKey(olc::Key::DOWN).bPressed && dir != UP) { | ||||
| 			dir = DOWN; | ||||
| 		} | ||||
| 		if (GetKey(olc::Key::LEFT).bPressed && dir != RIGHT) { | ||||
| 			dir = LEFT; | ||||
| 		} | ||||
| 		if (GetKey(olc::Key::RIGHT).bPressed && dir != LEFT) { | ||||
| 			dir = RIGHT; | ||||
| 		} | ||||
| 
 | ||||
| 		//Move Snake
 | ||||
| 		switch (dir) { | ||||
| 		case LEFT: | ||||
| 			SnakeXPos -= speed; | ||||
| 			break; | ||||
| 		case RIGHT: | ||||
| 			SnakeXPos += speed; | ||||
| 			break; | ||||
| 		case DOWN: | ||||
| 			SnakeYPos += speed; | ||||
| 			break; | ||||
| 		case UP: | ||||
| 			SnakeYPos -= speed; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	void FruitCoordGen() { | ||||
| 		//Fruit1
 | ||||
| 		if (fruit1 == false) { | ||||
| 			fruit1X = rand() & ScreenWidth(); | ||||
| 			fruit1Y = rand() & ScreenHeight(); | ||||
| 			fruit1 = true; | ||||
| 		} | ||||
| 		if (fruit1X <= 2 || fruit1X >= ScreenWidth() - 2) { | ||||
| 			fruit1X = rand() & ScreenWidth(); | ||||
| 		} | ||||
| 		if (fruit1Y <= 2 || fruit1Y >= ScreenHeight() - 2) { | ||||
| 			fruit1Y = rand() & ScreenHeight(); | ||||
| 		} | ||||
| 		//Fruit2
 | ||||
| 		//if (fruit2 == false) {
 | ||||
| 			//fruit2X = rand() & ScreenWidth();
 | ||||
| 			//fruit2Y = rand() & ScreenHeight();
 | ||||
| 			//fruit2 = true;
 | ||||
| 		//}
 | ||||
| 		//if (fruit2X <= 2 || fruit2X >= ScreenWidth() - 2) {
 | ||||
| 			//fruit1X = rand() & ScreenWidth();
 | ||||
| 		//}
 | ||||
| 		//if (fruit2Y <= 2 || fruit2Y >= ScreenHeight() - 2) {
 | ||||
| 			//fruit1Y = rand() & ScreenHeight();
 | ||||
| 		//}
 | ||||
| 		//if (fruit1X == fruit2X) {
 | ||||
| 			//fruit1X = rand() & ScreenWidth();
 | ||||
| 		//}
 | ||||
| 		//if (fruit1Y == fruit2Y) {
 | ||||
| 			//fruit1Y = rand() & ScreenWidth();
 | ||||
| 		//}
 | ||||
| 	} | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| public: | ||||
| 	bool OnUserUpdate(float fElapsedTime) override { | ||||
| 
 | ||||
| 		float speed = 20 * fElapsedTime; | ||||
| 		Clear(olc::BLACK); | ||||
| 		//Draw top border
 | ||||
| 		DrawLine(2, 2, ScreenWidth() - 2, 2, olc::WHITE); | ||||
| 		//Draw left border
 | ||||
| 		DrawLine(2, 2, 2, ScreenHeight() - 2, olc::WHITE); | ||||
| 		//Draw right border
 | ||||
| 		DrawLine(ScreenWidth() - 2, 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE); | ||||
| 		//Draw bottom border
 | ||||
| 		DrawLine(2, ScreenHeight() - 2, ScreenWidth() - 2, ScreenHeight() - 2, olc::WHITE); | ||||
| 
 | ||||
| 		olc::vi2d SnakeHead(SnakeXPos, SnakeYPos); | ||||
| 		olc::vi2d SnakeHeadSize(2, 2); | ||||
| 
 | ||||
| 		olc::vi2d Fruit(fruit1X, fruit1Y); | ||||
| 		olc::vu2d FruitSize(2, 2); | ||||
| 
 | ||||
| 		//Snake and fruit collision
 | ||||
| 		if (SnakeHead.x < Fruit.x + FruitSize.x && | ||||
| 			SnakeHead.x + SnakeHeadSize.x > Fruit.x && | ||||
| 			SnakeHead.y < Fruit.y + FruitSize.y && | ||||
| 			SnakeHead.y + SnakeHeadSize.y > Fruit.y) { | ||||
| 			fruit1 = false; | ||||
| 			score++; | ||||
| 			tailLength++; | ||||
| 		} | ||||
| 
 | ||||
| 		//Draw fruit
 | ||||
| 		DrawRect(fruit1X, fruit1Y, 1, 1, olc::RED); | ||||
| 
 | ||||
| 		//Fruit coord gen
 | ||||
| 		FruitCoordGen(); | ||||
| 
 | ||||
| 		//Border collision
 | ||||
| 		BorderCollisionCheck(); | ||||
| 
 | ||||
| 		tailUpdateTimer -= fElapsedTime; //Decrement the tail timer by the game elapsed time.
 | ||||
| 		if ( tailUpdateTimer <= 0 ) { | ||||
| 			//In order to create a tail following trail, start from the back-most tail and work your way up to the front, setting the previous tail's position to the current tail index's position.
 | ||||
| 			for (int i = tailLength - 1; i > 0; i--) { | ||||
| 				tailX[i]=tailX[i-1]; | ||||
| 				tailY[i]=tailY[i-1]; | ||||
| 			} | ||||
| 			//Now set the front-most tail to the current snake head's position.
 | ||||
| 			tailX[0]=SnakeXPos; | ||||
| 			tailY[0]=SnakeYPos; | ||||
| 			tailUpdateTimer=0.05; //Every 0.05 seconds we will re-update the tail positions instead of doing it by frame-based timing.
 | ||||
| 		} | ||||
| 
 | ||||
| 		//Draw Snake tail
 | ||||
| 		if (tailLength >= 1) { | ||||
| 			for (int i = 0; i < tailLength; i++) { | ||||
| 				DrawRect(tailX[i], tailY[i], 1, 1, olc::GREEN); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		//Snake position gets adjusted here.
 | ||||
| 		userInput(speed); | ||||
| 
 | ||||
| 		//Draw the Snake at its new position.
 | ||||
| 		DrawRect(SnakeXPos, SnakeYPos, 1, 1, olc::DARK_GREEN); | ||||
| 
 | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 	bool OnUserCreate() override { | ||||
| 		srand(time(NULL)); | ||||
| 		dir = STOP; | ||||
| 		//Snake X coord gen
 | ||||
| 		SnakeXPos = rand() & ScreenWidth(); | ||||
| 		if (SnakeXPos <= 3 || SnakeXPos >= ScreenWidth() - 3) { | ||||
| 			SnakeXPos = rand() & ScreenWidth(); | ||||
| 		} | ||||
| 		if (SnakeXPos <= 3 || SnakeXPos >= ScreenHeight() - 3) { | ||||
| 			SnakeXPos = rand() & ScreenHeight(); | ||||
| 		} | ||||
| 		//Snake Y coord gen
 | ||||
| 		SnakeYPos = rand() & ScreenWidth(); | ||||
| 		if (SnakeYPos <= 3 || SnakeYPos >= ScreenWidth() - 3) { | ||||
| 			SnakeYPos = rand() & ScreenWidth(); | ||||
| 		} | ||||
| 		if (SnakeYPos <= 3 || SnakeYPos >= ScreenHeight() - 3) { | ||||
| 			SnakeYPos = rand() & ScreenHeight(); | ||||
| 		} | ||||
| 		return true; | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| int main() { | ||||
| 	Snake demo; | ||||
| 	if (demo.Construct(100, 100, 10, 10)) | ||||
| 		demo.Start(); | ||||
| 	return 0; | ||||
| } | ||||
							
								
								
									
										1179
									
								
								ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1179
									
								
								ChallengeLeaguePointSolver/olcPGEX_QuickGUI.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,2 +1,4 @@ | ||||
| #define OLC_PGE_APPLICATION | ||||
| #include "pixelGameEngine.h" | ||||
| #define OLC_PGEX_QUICKGUI | ||||
| #include "olcPGEX_QuickGUI.h" | ||||
| @ -3596,7 +3596,7 @@ namespace olc | ||||
| 	{ | ||||
| 		// Check for typed characters
 | ||||
| 		for (const auto& key : vKeyboardMap) | ||||
| 			if (GetKey(std::get<0>(key)).bPressed) | ||||
| 			if (GetKey(std::get<0>(key)).bPressed&&nTextEntryCursor<4&&(GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key)).length()>0&&(GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key))[0]>='0'&&(GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key))[0]<='9') | ||||
| 			{ | ||||
| 				sTextEntryString.insert(nTextEntryCursor, GetKey(olc::Key::SHIFT).bHeld ? std::get<2>(key) : std::get<1>(key)); | ||||
| 				nTextEntryCursor++; | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user