generated from sigonasr2/CPlusPlusProjectTemplate
	Input parsing
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
		
							parent
							
								
									2936d5bd7f
								
							
						
					
					
						commit
						a9a2cd9c7f
					
				
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										106
									
								
								main.cpp
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								main.cpp
									
									
									
									
									
								
							| @ -1,89 +1,41 @@ | ||||
| #define OLC_PGE_HEADLESS | ||||
| #define OLC_PGE_APPLICATION | ||||
| #include "pixelGameEngine.h" | ||||
| #include "olcutils.h" | ||||
| 
 | ||||
| using namespace olc; | ||||
| 
 | ||||
| class Example : public olc::PixelGameEngine | ||||
| { | ||||
| public: | ||||
| 	Example() | ||||
| 	{ | ||||
| 		sAppName = "Example"; | ||||
| 	} | ||||
| 
 | ||||
| public: | ||||
|     bool RayVsRect(const vf2d ray_origin, const vf2d ray_dir, const olc::utils::geom2d::rect<float> target, vf2d&contact_point, vf2d&contact_normal, float&t_hit_near){ | ||||
| 
 | ||||
|         contact_normal = { 0, 0 }; | ||||
|         contact_point = { 0, 0 }; | ||||
| 
 | ||||
|         vf2d t_near = {(target.pos.x - ray_origin.x) / ray_dir.x, (target.pos.y - ray_origin.y) / ray_dir.y}; | ||||
|         vf2d t_far = {(target.pos.x + target.size.x - ray_origin.x) / ray_dir.x, (target.pos.y + target.size.y - ray_origin.y) / ray_dir.y}; | ||||
| 
 | ||||
|         if (t_near.x > t_far.x) {float b; b = t_near.x; t_near.x = t_far.x; t_far.x = b;}; | ||||
|         if (t_near.y > t_far.y) {float b; b = t_near.y; t_near.y = t_far.y; t_far.y = b;}; | ||||
| 
 | ||||
|         if (t_near.x > t_far.y || t_near.y > t_far.x) return false; | ||||
| 
 | ||||
|         t_hit_near = fmax(t_near.x, t_near.y); | ||||
|         float t_hit_far = fmin(t_far.x, t_far.y); | ||||
| 
 | ||||
|         if (t_hit_far < 0) return false; | ||||
| 
 | ||||
|         contact_point.x = ray_origin.x + t_hit_near * ray_dir.x;  | ||||
|         contact_point.y = ray_origin.y + t_hit_near * ray_dir.y; | ||||
| 
 | ||||
|         if (t_near.x > t_near.y) | ||||
|             if ( 1.0f / ray_dir.x < 0) | ||||
|                 contact_normal = { 1, 0 }; | ||||
|             else | ||||
|                 contact_normal = { -1, 0}; | ||||
|         else  | ||||
|         if ( t_near.x < t_near.y) | ||||
|             if ( 1.0f / ray_dir.y < 0) | ||||
|                 contact_normal = { 0, 1 }; | ||||
|             else | ||||
|                 contact_normal = { 0, -1 }; | ||||
|          | ||||
|         return true; | ||||
| 
 | ||||
|          | ||||
|     } | ||||
|     vf2d originPoint={16,16}; | ||||
| 	bool OnUserCreate() override | ||||
| 	{ | ||||
| 		// Called once at the start, so create things here
 | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| 	bool OnUserUpdate(float fElapsedTime) override | ||||
| 	{ | ||||
|         vf2d velocity={(GetKey(D).bHeld-GetKey(A).bHeld)*20*fElapsedTime,(GetKey(S).bHeld-GetKey(W).bHeld)*20*fElapsedTime}; | ||||
|         vf2d contact_point; | ||||
|         vf2d contact_normal; | ||||
|         float t_hit_near; | ||||
| 
 | ||||
| 		Clear(Pixel(64,64,255)); | ||||
|         if (!olc::utils::geom2d::overlaps(olc::utils::geom2d::circle<float>{originPoint+velocity,5},olc::utils::geom2d::rect<float>{{32,32},{64,32}})) { | ||||
|             originPoint+=velocity; | ||||
|             DrawCircle(originPoint,5); | ||||
|         } else { | ||||
|             DrawCircle(originPoint,5,RED); | ||||
|         } | ||||
|         DrawLine(originPoint,GetMousePos()); | ||||
| 
 | ||||
|         DrawRect({32,32},{64,32},RayVsRect(originPoint, GetMousePos()-originPoint, olc::utils::geom2d::rect<float>{{32,32},{64,32}},contact_point,contact_normal,t_hit_near)&&t_hit_near<1?YELLOW:WHITE); | ||||
| 		return true; | ||||
| 	} | ||||
| struct Monkey{ | ||||
|     int number=999999999; | ||||
|     std::string monkey1=""; | ||||
|     std::string operation=""; | ||||
|     std::string monkey2=""; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| int main() | ||||
| { | ||||
| 	Example demo; | ||||
| 	if (demo.Construct(128, 120, 8, 8)) | ||||
| 		demo.Start(); | ||||
|     std::map<std::string,Monkey>monkeys; | ||||
| 	std::ifstream file("input"); | ||||
|     while(file.good()){ | ||||
|         std::string line; | ||||
|         std::getline(file,line); | ||||
|         if (line.length()>0){ | ||||
|             Monkey m{999999999,"","",""}; | ||||
|             std::string name=line.substr(0,4); | ||||
|             if (line.length()==17){ | ||||
|                 m.monkey1=line.substr(6,4); | ||||
|                 m.operation=line.substr(11,1); | ||||
|                 m.monkey2=line.substr(13,4); | ||||
|             } else { | ||||
|                 m.number=std::atoi(line.substr(6,line.size()-6).c_str()); | ||||
|             } | ||||
|             //std::cout<<line<<std::endl;
 | ||||
|             if (m.number!=999999999){ | ||||
|                 std::cout<<"Monkey "<<name<<": "<<m.number<<std::endl; | ||||
|             } else { | ||||
|                 std::cout<<"Monkey "<<name<<": "<<m.monkey1<<" "<<m.operation<<" "<<m.monkey2<<std::endl; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
							
								
								
									
										2
									
								
								sig
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								sig
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ export AUTO_UPDATE=true | ||||
| source utils/define.sh | ||||
| 
 | ||||
| define PROJECT_NAME "C++ProjectTemplate" | ||||
| define CUSTOM_PARAMS "-std=c++17 -lX11 -lGL -lpthread -lpng -lstdc++fs -lpulse -lpulse-simple -I/usr/include/lua5.3" | ||||
| define CUSTOM_PARAMS "-std=c++17 -lX11 -lpthread -lpng -lstdc++fs -I/usr/include/lua5.3" | ||||
| define LANGUAGE "C++" | ||||
| 
 | ||||
| source utils/main.sh | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user