Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <windows.h>
- #include <conio.h>
- #define CLS SetConsoleCursorPosition(handle, (COORD){0, 0})
- #define W (40)
- #define H (20)
- #define INB(v, a, b) (v >= a && v <= b)
- static char buff[W * H];
- static void setchar(int x, int y, char c)
- {
- if (INB(x, 0, W - 1) && INB(y, 0, H - 1))
- buff[x + y * W] = c;
- }
- static void render(void)
- {
- for (int i = 0; i < W * H; ++i)
- {
- if (i % W == 0)
- putchar('\n');
- putchar(buff[i]);
- }
- putchar('\n');
- }
- int main(void)
- {
- system("cls");
- SetConsoleTitle("Roguelike");
- ShowCursor(FALSE);
- HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
- char running = 1;
- int x = W / 2, y = H / 2;
- int cmd;
- while (running)
- {
- // render
- CLS;
- memset(buff, '_', sizeof buff);
- setchar(x, y, '@');
- render();
- // update
- switch ((cmd = getch()))
- {
- case 'a': x--; break;
- case 'd': x++; break;
- case 'w': y--; break;
- case 's': y++; break;
- case 27: running = 0; break;
- default: break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement