コード例 #1
0
ファイル: cref.c プロジェクト: KoyoA/patterns
int main(int argc, char *argv[]) {
	int i;
	Table_T identifiers = Table_new(10000, textcmp, texthash);
	Text_save_T mark = Text_save();

	Fmt_register('T', Text_fmt);
	Fmt_register('D', Integer_fmt);
	first = Text_cat(Text_cat(Text_ucase, Text_lcase), Text_box("_", 1));
	rest  = Text_cat(first, Text_digits);
	for (i = 1; i < argc; i++) {
		FILE *fp = fopen(argv[i], "r");
		if (fp == NULL)
		fprintf(stderr, "%s: can't open '%s' (%s)\n", argv[0], argv[i], strerror(errno));
		else {
			cref(argv[i], fp, identifiers);
			fclose(fp);
		}
	}
	if (argc == 1)
		cref(NULL, stdin, identifiers);
	{
		int i;
		void **array = Table_toArray(identifiers, NULL);
		qsort(array, Table_length(identifiers), 2*sizeof (*array), compare);
		for (i = 0; array[i]; i += 2) {
			Fmt_print("%T", array[i]);
			print(array[i+1]);
			FREE(array[i]);
		}
		FREE(array);
		Table_free(&identifiers);
	}
	Text_restore(&mark);
	return EXIT_SUCCESS;
}
コード例 #2
0
ファイル: asdl.c プロジェクト: emtees/old-code
static void asdl_progbeg(int argc, char *argv[]) {
	int i;

#if WIN32
	_setmode(_fileno(stdout), _O_BINARY);
#endif
	pickle = rcc_program(1, 0, Seq_new(0), Seq_new(0), argc, Seq_new(0));
	for (i = 0; i < argc; i++)
		Seq_addhi(pickle->argv, to_generic_string(Text_box(argv[i], strlen(argv[i]) + 1)));
	interfaces = pickle->interfaces;
}
コード例 #3
0
ファイル: game.cpp プロジェクト: DarkDefender/SDL_project
void game(SDL_Window *mainwindow){
    bool done = false;

	Text_box b1 = Text_box(10,10,110,50,"../res/fonts/visitor1.ttf", 10);
	Text_box b2 = Text_box(10,40,100,50,"../res/fonts/Tewi-normal-11.psf");
    b1.new_text("Hipp, Happ, Hopp! ->");
    b2.new_text("Press enter to exit meh tutorial...");

    b2.set_text_speed(100, true);

	Timer sin_timer, frame_timer, fps_timer;
	sin_timer.start();
	frame_timer.start();

	int frames = 0;

	SDL_Event event;

    // Set mouse to relative mode
	SDL_SetRelativeMouseMode( SDL_TRUE );

    printError("Pre game");
	Level level = Level();
    printError("Post level");

	while( !done ){

		fps_timer.start();

		while( SDL_PollEvent( &event ) != 0 ){  
			switch (event.type) {
				case SDL_MOUSEBUTTONDOWN:
					switch (event.button.button)
					{
						case SDL_BUTTON_LEFT:
							level.handle_key_down(ATTACK1);
						   	break;
						case SDL_BUTTON_RIGHT:
							level.handle_key_down(ATTACK2);
							break;
						default:
							//TODO perhaps use this for error messages?
							//SDL_ShowSimpleMessageBox(0, "Mouse", "Some other button was pressed!", window);
							break;
					}
					break;
				case SDL_MOUSEBUTTONUP:
					switch (event.button.button)
					{
						case SDL_BUTTON_LEFT:
							level.handle_key_up(ATTACK1);
						   	break;
						case SDL_BUTTON_RIGHT:
							level.handle_key_up(ATTACK2);
							break;
						default:
							//TODO perhaps use this for error messages?
							//SDL_ShowSimpleMessageBox(0, "Mouse", "Some other button was pressed!", window);
							break;
					}
					break;
				case SDL_MOUSEMOTION:
					//int mouseX = event.motion.x;
					//int mouseY = event.motion.y;

					level.handle_mouse( -event.motion.xrel / 1000.0f, -event.motion.yrel / 1000.0f);

					break;
				case SDL_KEYDOWN:
					if(event.key.repeat){
						// We don't want to handle key repeats
						break;
					}
					switch (event.key.keysym.sym)
					{
					   case SDLK_f:  SDL_ToggleFS(mainwindow, &level); break;
					   case SDLK_b:  
									  b2.new_text("asdas dasd adasdas dasda sdasd asdasd asda sdasd asd adasd asda dasdas dasd asdasd asd a");
									  break;
					   case SDLK_a: level.handle_key_down(LEFT); break;
					   case SDLK_d: level.handle_key_down(RIGHT); break;
					   case SDLK_w: level.handle_key_down(UP); break;
					   case SDLK_s: level.handle_key_down(DOWN); break;
					   case SDLK_k: level.handle_key_down(ATTACK1); break;
					   case SDLK_SPACE: level.handle_key_down(SPACE); break;
					}
					break;
				case SDL_KEYUP:
					switch (event.key.keysym.sym)
					{
					   case SDLK_a: level.handle_key_up(LEFT); break;
					   case SDLK_d: level.handle_key_up(RIGHT); break;
					   case SDLK_w: level.handle_key_up(UP); break;
					   case SDLK_s: level.handle_key_up(DOWN); break;
					   case SDLK_k: level.handle_key_up(ATTACK1); break;
					   case SDLK_SPACE: level.handle_key_up(SPACE); break;
					}
					break;
				case SDL_QUIT:
					done = 1;
					break;
				default:
					break;
			}
		}

		printError("Pre draw");

		b1.set_pos(40 - 10 * sin( sin_timer.delta_s() * 10.0f ), 10 );

		/* Clear our buffer with a red background */
		glClearColor ( 0.5, 0.5, 0.5, 1.0 );
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		//glClear ( GL_COLOR_BUFFER_BIT );
		printError("Clear");
		level.render();
		printError("Level");
        //Disable depth test for gui rendering
		glDisable(GL_DEPTH_TEST);
		b1.render_text();
		b2.render_text();
		//Enable depth test again
		glEnable(GL_DEPTH_TEST);
		printError("Text");
		/* Swap our back buffer to the front */
		SDL_GL_SwapWindow(mainwindow);
		/* Wait 2 seconds */
		//SDL_Delay(2000);
        
		level.update();

        if( fps_timer.delta_s() < 1.0f/120.0f ){
			SDL_Delay( (1000 / 120) - fps_timer.getTicks() );
		}

		frames++;
		if( frame_timer.delta_s() >= 1 ){
			b1.new_text("FPS: " + to_string(frames));
			frames = 0;
			frame_timer.start();
		}
	}
}
コード例 #4
0
ファイル: asdl.c プロジェクト: emtees/old-code
static void asdl_defstring(int len, char *str) {
	put(rcc_Defstring(Text_box(stringn(str, len), len)));
}