예제 #1
0
char		*mouse_event(SDL_Event e)
{
  if (e.type == SDL_MOUSEBUTTONDOWN)
    {
      if (e.button.button == SDL_BUTTON_LEFT)
        return (choose_level(e.button.x, e.button.y));
    }
  return (NULL);
}
예제 #2
0
파일: skiplist.c 프로젝트: Kayven/lgmisc
void *OrderList_put(T ol, const void *key, void *value)
{

  struct node **pp;
  struct node *p;
  assert(ol);
  int i;

  pp = ol->head;
  for(i = ol->level-1; i>=0; i--) {
    for(; pp[i] && ol->cmp(pp[i]->key,key) < 0; pp = pp[i]->links)
      ;
    ol->update[i] = &pp[i];
  }

  ol->timestamp++;
      
  if (pp[0] && ol->cmp(key,pp[0]->key) == 0) {
    void *prev;
    prev = pp[0]->value;
    pp[0]->value = value;
    return prev;
  } else {
    int level = choose_level(ol->maxlevel);
    p = ALLOC(sizeof(*p) + level * sizeof(*p->links));
    p->key = key;
    p->value = value;
    p->level = level;
    p->links = (struct node **)(p + 1);

    for(i = 0; i < min(level,ol->level); i++) {
      p->links[i] = *ol->update[i];
      *ol->update[i] = p;
    }
	
    if (level > ol->level) {
      for(i = ol->level; i < level; i++) {
	ol->head[i] = p;
	p->links[i] = NULL;
      }
      ol->level = level;
    }

    ol->length++;
    return NULL;
  }
}
예제 #3
0
int main()
{
	int t;
	
	void gotoxy(int x, int y);
	void dwall();
	void dwall1();
	void dwall2();
	void change(int t);
	void add(int x, int y);
	void move();
	void choose_level();
	void check_level();
	void draw_extra_wall(int);
	void load_data();
	void save_data();
	void show_top_scores();
	void dwall3();
	load_data();
	choose_level();
	                                            //dwall() and select speed
	add(2, 2);
	add(2, 3);
	add(2, 4);
	while (running)
	{
		t = _getch();
		change(t);
		while(!kbhit())
		{
			move();
			Sleep(speed);                             /*用来控制蛇移动的速度*/
			check_level();                       /*change to next level if snake is long enough*/
			score = 10 * node - 30;
			gotoxy(7, N + 1);
			printf("Your score is %d", score);
			gotoxy(0, 10);
			printf("your score is %d", score);

		}
	}
	save_data();
	return 0;
}
예제 #4
0
파일: tint.c 프로젝트: yaozongyou/tetris
int main(int argc, char* argv[]) {
    bool finished;
    int ch;
    engine_t engine;
    /* Initialize */
    rand_init();							/* must be called before engine_init () */
    engine_init(&engine, score_function);	/* must be called before using engine.curshape */
    finished = shownext = FALSE;
    memset(shapecount, 0, NUMSHAPES * sizeof(int));
    shapecount[engine.curshape]++;
    parse_options(argc,argv);				/* must be called after initializing variables */
    if (level < MINLEVEL) {
        choose_level();
    }
    io_init();
    drawbackground();
    in_timeout(DELAY);
    /* Main loop */
    do {
        /* draw shape */
        showstatus(&engine);
        drawboard(engine.board);
        out_refresh();
        /* Check if user pressed a key */
        if ((ch = in_getch ()) != ERR) {
            switch (ch) {
            case 'j':
            case KEY_LEFT:
                engine_move(&engine,ACTION_LEFT);
                break;
            case 'k':
            case '\n':
                engine_move(&engine,ACTION_ROTATE);
                break;
            case 'l':
            case KEY_RIGHT:
                engine_move(&engine,ACTION_RIGHT);
                break;
            case ' ':
            case KEY_DOWN:
                engine_move(&engine,ACTION_DROP);
                break;
                /* show next piece */
            case 's':
                shownext = TRUE;
                break;
                /* toggle dotted lines */
            case 'd':
                dottedlines = !dottedlines;
                break;
                /* next level */
            case 'a':
            case KEY_UP:
                if (level < MAXLEVEL) {
                    level++;
                    in_timeout(DELAY);
                }
                else out_beep();
                break;
                /* quit */
            case 'q':
                finished = TRUE;
                break;
                /* pause */
            case 'p':
                out_setcolor(COLOR_WHITE,COLOR_BLACK);
                out_gotoxy((out_width() - 34) / 2,out_height() - 2);
                out_printf("Paused - Press any key to continue");
                while ((ch = in_getch ()) == ERR) ;	/* Wait for a key to be pressed */
                in_flush();							/* Clear keyboard buffer */
                out_gotoxy((out_width() - 34) / 2, out_height() - 2);
                out_printf("                                  ");
                break;
                /* unknown keypress */
            default:
                out_beep();
            }
            in_flush();
        } else {
            switch (engine_evaluate(&engine)) {
            /* game over (board full) */
            case -1:
                if ((level < MAXLEVEL) && ((engine.status.droppedlines / 10) > level)) level++;
                finished = TRUE;
                break;
                /* shape at bottom, next one released */
            case 0:
                if ((level < MAXLEVEL) && ((engine.status.droppedlines / 10) > level)) {
                    level++;
                    in_timeout(DELAY);
                }
                shapecount[engine.curshape]++;
                break;
                /* shape moved down one line */
            case 1:
                break;
            }
        }
    } while (!finished);
    /* Restore console settings and exit */
    io_close();
    /* Don't bother the player if he want's to quit */
    if (ch != 'q') {
        showplayerstats(&engine);
        savescores(GETSCORE(engine.score));
    }
    exit(EXIT_SUCCESS);
}