예제 #1
0
파일: main.c 프로젝트: SimonBoeuf/wolf3D
int		main(int argc, char **argv)
{
	t_win	*window;
	t_cam	*cam;
	t_map	*map;

	/* Check argv */
	if (argc > 2 || argc == 1)
		ft_error("Too or not enough parameters in command line");
	/* Init Map */
	map = ft_init_map(argv[1]);
	/* Init Env */
	window = init_env();
	/* Init Camera */
	cam = ft_new_camera(map->start, M_PI / 2);

	/* Init img */
	window->img = init_img();

	mlx_do_key_autorepeaton(window->mlx);
	mlx_hook(window->win, 2, (1L << 0), ft_key_hook, window);
	mlx_expose_hook(window->win, ft_expose_hook, window);
	ft_draw_img();
	mlx_put_image_to_window(window->mlx, window->win, window->img->img, 0, 0);
	mlx_loop(window->mlx);


	/* Display view */
	/* Fini ! */
	return (0);
}
예제 #2
0
파일: main.c 프로젝트: jaybi42/fdf
static int	fdf(t_env *e, char *win_name)
{
	if (init_env(e, win_name) != 0)
		return (1);
	mlx_expose_hook(e->win, expose_hook, e);
	mlx_hook(e->win, 2, 0, key_hook, e);
	mlx_do_key_autorepeaton(e->mlx);
	mlx_loop_hook(e->mlx, loop_hook, e);
	mlx_loop(e->mlx);
	return (0);
}
예제 #3
0
파일: MlxLib.cpp 프로젝트: Geod24/Nibbler
int	MlxLib::init(void)
{
  std::stringstream	_val;

  /* ************** Check height and width max values ************** */
  if ((_h * _sqsize) > HEIGHT_MAX) {
    _val << "height must be < " << (HEIGHT_MAX / _sqsize);
    _lerr = _val.str();
    return (LIB_FAILURE);
  }
  if ((_w * _sqsize) > WIDTH_MAX) {
    _val << "width must be < " << (WIDTH_MAX / _sqsize);
    _lerr = _val.str();
    return (LIB_FAILURE);
  }
  /* **************************************************************** */

  if (0 == (_mlx = mlx_init())) {
    _lerr = "mlx_init() failed!";
    return (LIB_FAILURE);
  }

  if (0 == (_win = mlx_new_window(_mlx, (_w * _sqsize), (_h * _sqsize),
  				  _wname.c_str()))) {
    _lerr = "window creation failed!";
    return (LIB_FAILURE);
  }

  if (0 == (_img = mlx_new_image(_mlx, (_w * _sqsize), (_h * _sqsize)))) {
    _lerr = "image creation failed!";
    return (LIB_FAILURE);
  }

  if (0 == (_data = mlx_get_data_addr(_img, &_bpp, &_szline, &_endian))) {
    _lerr = "unable to fetch basic data (mlx_get_data_addr() returned 0)";
    return (LIB_FAILURE);
  }

  draw_walls();
  mlx_do_key_autorepeaton(_mlx);
  return (LIB_SUCCESS);
}
예제 #4
0
파일: mlx_human.c 프로젝트: darkael88/zappy
void		*ft_mlx(void *p_data)
{
	t_env	*e;

	e = (t_env *)p_data;
	e->graph.mlx = mlx_init();
	if (e->graph.mlx != NULL)
		e->graph.win = mlx_new_window(e->graph.mlx, WIN_SIZE_X,
										WIN_SIZE_Y, TITLE);
	if (e->graph.mlx && e->graph.win)
	{
		ft_init_img(e);
		e->graph.status = 1;
		mlx_expose_hook(e->graph.win, &expose, e);
		mlx_loop_hook(e->graph.mlx, &expose_loop, e);
		mlx_do_key_autorepeaton(e->graph.mlx);
		mlx_hook(e->graph.win, 2, (1L << 0), ft_button, e);
		mlx_loop(e->graph.mlx);
	}
	return (NULL);
}
예제 #5
0
파일: ft_main.c 프로젝트: gabfou/RT
int		main(void)
{
	t_env	e;
	int		fd;
	t_ray	ray;

	e = init_mlx(1000, 1022);
	init_env(&e);
	ray.origin = e.cam;
	fd = ft_open();
	e.list = recur_list_build(fd, NULL);
	close(fd);
	fd = ft_open();
	e.lights = recur_lights_build(fd, NULL);
	close(fd);
	e.ray = ray;
	mlx_do_key_autorepeaton(e.mlx);
	mlx_hook(e.win, 2, 1L << 0, key_hook, &e);
	mlx_expose_hook(e.win, expose_hook, &e);
	mlx_loop(e.mlx);
	return (0);
}
예제 #6
0
t_display	*new_display(void)
{
	t_display *ret;

	ret = malloc(sizeof(*ret));
	ret->conn = mlx_init();
	ret->dim.w = 420;
	ret->dim.h = 420;
	ret->win = mlx_new_window(ret->conn, ret->dim.w, ret->dim.h, "fractol");
	ret->g = new_graphics(ret);
	ret->n = 30;
	ret->offset[0] = -0.5f;
	ret->offset[1] = -0.5f;
	ret->zoom = 2;
	ret->sel = 1;
	ret->can_move = 1;
	set_key_handlers(ret);
	mlx_loop_hook(ret->conn, &event_loop, ret);
	mlx_expose_hook(ret->win, &disp_expose, ret);
	mlx_do_key_autorepeaton(ret->conn);
	return (ret);
}
예제 #7
0
int	wolf3d(char **argv)
{
  t_w3d elem;

  elem.tab = tab;
  elem.x_window = 1080;
  elem.y_window = 768;
  elem.charx = 1.5;
  elem.chary = 1.5;
  if ((elem.mlx_ptr = mlx_init()) == NULL)
    return (0);
  if ((elem.win_ptr = mlx_new_window(elem.mlx_ptr,
	elem.x_window, elem.y_window, "Wolf 3D")) == 0)
    return (0);
  if ((elem.img_ptr = mlx_new_image(elem.mlx_ptr, elem.x_window, elem.y_window)) == 0)
    return (0);
  mlx_expose_hook(elem.win_ptr, expose_wolf3d, &elem);
  mlx_do_key_autorepeaton(elem.mlx_ptr);
  mlx_hook(elem.win_ptr, 2, (1L<<0), keyhookwolf3d, &elem);
  elem.x_size = elem.x_window;
  elem.y_size = elem.y_window/2;
  w3sidelines(elem);
  mlx_loop(elem.mlx_ptr);
}
예제 #8
0
파일: wolf.c 프로젝트: aymerixp/volf3d
int		main(void)
{
	t_env			e;
	t_cam			cam;
	t_control		control;
	cam.hauteur = 0;
	cam.orientation = 0;
	cam.direction = 0;
	cam.fov = 0;
	cam.pos_cam_x = 11;
	cam.pos_cam_y = 12;
	cam.dirX = -1;
	cam.dirY = 0;
	cam.planeX = 0;
	cam.planeY = 0.66;
	cam.test= 0;
	control.up = 0;
	control.down = 0;
	control.right = 0;
	control.left = 0;
	e.mlx = mlx_init();
	e.win = mlx_new_window(e.mlx, WIDTH, HEIGHT, "wolf3d");
	e.control = 0;

	int map[24][24] = {
	    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	    {1,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,2,2,2,2,2,0,0,0,0,3,0,3,0,3,0,0,0,1},
	    {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,3,0,0,0,3,0,0,0,1},
	    {1,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,3,0,3,0,3,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,0,0,0,0,2,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
	};

/* ne pas oublier de secure les malloc 
 * ET LES FUITES MEMOIRES
 * */

	int nrows = 24;
	int ncolumns = 24;
	int **array;
	array = (int**)malloc(sizeof(int*) * (nrows * ncolumns));
	int i, j;
	i = 0;
	j = 0;
	int k;
	k = 0;
	while (i < nrows)
	{
		j = 0;
		array[i] = (int*)malloc(sizeof(int) * (nrows));
		while (j < ncolumns)
		{
			/*
			ft_putnbr(i);
			ft_putstr(" - ");
			ft_putnbr(j);
			ft_putstr(" : ");
			*/
			array[i][j] = map[i][j];

			/*
			ft_putnbr(map[i][j]);
			ft_putchar(' ');
			*/
			j++;
			k++;
		}
		i++;
	}

	e.map = array;

	i = 0;
	j = 0;
	while (i < nrows)
	{
		j = 0;
		while (j < ncolumns)
		{
			ft_putnbr(array[i][j]);
			ft_putstr(" - ");
			j++;
		}
		ft_putchar('\n');
		i++;
	}

	int		sizeline;
	int		bbp;
	int		endian;

	e.img = mlx_new_image(e.mlx, WIDTH, HEIGHT);

	e.data = mlx_get_data_addr(e.img, &bbp, &sizeline, &endian);
	e.sizeline = sizeline;
	e.bpp = bbp;
	e.color = 0xffffff;

	e.cam = &cam;
	e.control = &control;
	mlx_do_key_autorepeaton(e.mlx);
	mlx_loop_hook(e.mlx, &loop_hook, &e);

	mlx_key_hook(e.win, &key_release_hook, &e);
	mlx_hook(e.win, KEYPRESS, KEYPRESSMASK, &key_press_hook, &e);

	//mlx_mouse_hook(e.win, mouse_hook, &e); // fonction draw la dedans pour eviter l'expose
	//mlx_expose_hook(e.win, expose_hook, &e);

	//while (42)
		//cast_rays(&e);

 	mlx_mouse_hook(e.win, mouse_hook, &e);
	mlx_put_image_to_window(e.mlx, e.win, e.img, 0, 0);
	mlx_loop(e.mlx);
	return (0);
}
예제 #9
0
파일: moncube.c 프로젝트: jpmeirsman/42
int main(int argc, char **argv)
{
	int retour;
	t_data data;

	if ( !(argc == 2 || argc == 3))
		return (-1);
	
	if (argc == 3)
	{
		retour = read_pal(&data, argv[2]);
	}
	else
	{
	data.palette = (t_palette *) malloc(sizeof(t_palette));
	data.palette[0].start_color = int_to_color4(0x00FFFFFF);
	data.palette[0].end_color = int_to_color4(0x00FFFFFF);
	data.palette[0].start_range = 0;
	data.palette[0].end_range = 1;
	}
	if ((data.mlx_ptr = mlx_init()) == NULL)
	{
		printf("I can't open the display\n");
		return (EXIT_FAILURE);
	}
	data.screen_width = 1024;
	data.screen_height = 768;
	data.canvas_width = data.screen_width - 100 - 1;
	data.canvas_height = data.screen_height - 2;
	data.back_buffer = 1;
	data.front_buffer = 0;
	data.anime = 1;
	if ((data.mlx_win = mlx_new_window(data.mlx_ptr, data.screen_width,
		data.screen_height, "MonCube")) == NULL)
		return (EXIT_FAILURE);
	retour = mlx_key_hook(data.mlx_win, my_key_on_release_funct, &data);
	retour = mlx_loop_hook(data.mlx_ptr, my_loop_funct, &data);
	retour = mlx_mouse_hook(data.mlx_win,my_mouse_on_click_funct, &data);
	retour = mlx_expose_hook(data.mlx_win, my_expose_funct, &data);
	retour = mlx_hook(data.mlx_win, KeyPress, KeyPressMask,
		my_key_on_maintain_funct, &data);
	retour = mlx_hook(data.mlx_win, MotionNotify, PointerMotionMask,
		my_mouse_on_move_funct, &data);
	retour = mlx_hook(data.mlx_win, ButtonRelease, ButtonReleaseMask,
		my_mouse_on_release_funct, &data);

	print_menu(&data);
	data.put_in_canvas = false;
	fdf_bline(&data, data.canvas_width + 1, 0, data.canvas_width + 1, data.screen_height
		- 1, 0x00CFCFCF);
	fdf_bline(&data,data.screen_width - 1, 0, data.screen_width - 1,
		data.screen_height - 1, 0x00CFCFCF);
	fdf_bline(&data, 0, 0, 0, data.screen_height - 1, 0x00CFCFCF);
	fdf_bline(&data, 0, data.screen_height - 1, data.screen_width - 1,
		data.screen_height - 1, 0x00CFCFCF);
//	draw_square(&data, data.canvas_width + 2, 0, data.screen_width - 2, 
//		data.screen_height - 2, 0x00CFCFCF);
	data.put_in_canvas = true;

	data.img[data.back_buffer] = mlx_new_image(data.mlx_ptr, data.canvas_width
		, data.canvas_height);
	data.canvas[data.back_buffer] = (int *) mlx_get_data_addr(
		data.img[data.back_buffer], &data.bpp, &data.sizeline, &data.endian);
	data.img[data.front_buffer] = mlx_new_image(data.mlx_ptr, data.canvas_width
		, data.canvas_height);
	data.canvas[data.front_buffer] = (int *) mlx_get_data_addr(
		data.img[data.front_buffer], &data.bpp, &data.sizeline, &data.endian);

	start_fdf(&data, read_file(argv[1]));
//	print_my_cube(&data);

	switch_buffer(&data);
	mlx_put_image_to_window(data.mlx_ptr, data.mlx_win,
		data.img[data.front_buffer], 1, 1);

	if (retour == 1)
		return 0;
	retour = mlx_do_key_autorepeaton(data.mlx_ptr);
	mlx_loop(data.mlx_ptr);
	return (EXIT_SUCCESS);
}