elks-enhanced
public
Read
Owner: themaster
Branch: master
Commits: 6893
Updated: 2026-04-19 00:15
Git CLI clone URL
git clone https://www.xt-emporium.com/git/elks-enhanced.git
Fullscreen desktop URL
Code
Commits
History
Branches
Bug Reports
Discussions
Compare
Settings
elks-enhanced
/
elkscmd
/
tui
/
ttytetris.h
File editor
/* * tetris.h * Copyright © 2008 Martin Duquesnoy <xorg62@gmail.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of the nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Libs */ #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <signal.h> #include <termios.h> #include <sys/time.h> /* Configuration of tty-tetris * Need to re-compile to set the change. */ /* Move the shape */ #define KEY_MOVE_LEFT 'h' #define KEY_MOVE_RIGHT 'l' /* Change the shape position */ #define KEY_CHANGE_POSITION_NEXT 'k' /* also 'd' */ #define KEY_CHANGE_POSITION_PREV 'j' /* also 's' */ /* ' ' for space key */ #define KEY_DROP_SHAPE ' ' /* Other key */ #define KEY_PAUSE 'p' #define KEY_QUIT 'q' #define KEY_SPEED '-' /* Timing in milisecond */ #define TIMING 300000 /* Expension factor of shapes */ #define EXP_FACT 2 /* Frame dimension */ #ifdef _M_I86 #define FRAMEW 23 #define FRAMEH 20 #else #define FRAMEW (int)(10*2.3) #define FRAMEH (int)(9*2.3) #endif #define FRAMEW_NB 15 #define FRAMEH_NB 5 /* Shapes position */ #define N_POS ((current.pos < 3) ? current.pos + 1 : 0) #define P_POS ((current.pos > 0) ? current.pos - 1 : 3) /* Draw the score.. */ #define DRAW_SCORE() set_color(Score); \ printf("\033[%d;%dH %d", FRAMEH + 3, 9, score); \ printf("\033[%d;%dH %d", FRAMEH + 4, 9, lines); \ set_color(0); /* Bool type */ typedef enum { False, True } Bool; /* Shape structure */ typedef struct { int num; int next; int pos; int x, y; Bool last_move; } shape_t; /* Color enum */ enum { Black, Blue, Red, Magenta, White, Green, Cyan, Yellow, Border, Score, ColLast }; /* Prototypes */ /* util.c */ void clear_term(void); void set_cursor(Bool); void printxy(int, int, int, char*); void set_color(int); int nrand(int, int); void sig_handler(int); /* frame.c */ void frame_init(void); void frame_refresh(void); /* shapes.c */ void shape_set(void); void shape_unset(void); void shape_new(void); void shape_go_down(void); void shape_set_position(int); void shape_move(int); void shape_drop(void); /* tetris.c */ void arrange_score(int l); void check_plain_line(void); int check_possible_pos(int, int); void get_key_event(void); /* Variables */ const int shapes[7][4][4][2]; struct itimerval tv; struct termios back_attr; shape_t current; int frame[FRAMEH + 1][FRAMEW + 1]; int frame_prev[FRAMEH + 1][FRAMEW + 1]; int score; int lines; Bool running;
Commit message
This repository is read-only for this account.
Repository snapshot
Current branch
master
Visibility
public
Your access
Read
Remote
Configured
File activity
View file history