simple pong

master
orange 12 years ago
parent 97c466d109
commit b9821ccd5e

3
.gitignore vendored

@ -7,3 +7,6 @@ mandelbrot.bmp
threads threads
structs structs
circular-buffer circular-buffer
bit-fuckery
bit-fuckery2
ncurses-pong

@ -1,7 +1,7 @@
CFLAGS=-std=c99 -Wall -g -O2 CFLAGS=-std=c99 -Wall -g -O2
INDENTOPTS=-kr --no-tabs --braces-on-func-def-line --indent-level2 INDENTOPTS=-kr --no-tabs --braces-on-func-def-line --indent-level2
TARGETS=approximate-pi linked-list mandelbrot mandelbrot.bmp threads circular-buffer structs ncurses-pong bit-fuckery bit-fuckery2 TARGETS=approximate-pi linked-list mandelbrot threads circular-buffer structs ncurses-pong bit-fuckery bit-fuckery2
.PHONY: all .PHONY: all
all: $(TARGETS) all: $(TARGETS)

@ -0,0 +1,59 @@
#include <ncurses.h>
#include <unistd.h>
#define MAX_X 100.0
#define MAX_Y 100.0
#define MAX_R 24
#define MAX_C 80
void xy2rc(float x, float y, int *r, int *c) {
*c = (x / MAX_X) * MAX_C;
*r = MAX_R - ((y / MAX_Y) * MAX_R);
}
float ball_x = 0.0;
float ball_y = 0.0;
float dir_x = +2.0;
float dir_y = +1.0;
void move_ball(float x, float y) {
/* Move ball */
ball_x = x;
ball_y = y;
}
void paint_ball() {
int r, c;
xy2rc(ball_x, ball_y, &r, &c);
mvaddch(r, c, ACS_DIAMOND);
}
void paint() {
clear();
paint_ball();
refresh();
}
int main() {
initscr(); /* Start curses mode */
curs_set(0); /* Disable cursor */
while(true) {
ball_x += dir_x;
ball_y += dir_y;
if (ball_x>MAX_X || ball_x<0) {
dir_x = -dir_x;
}
if (ball_y>MAX_Y || ball_y<0) {
dir_y = -dir_y;
}
paint();
usleep(50000);
}
refresh(); /* Print it on to the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
}
Loading…
Cancel
Save