Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <winuser.h>
- #define set_char(X,Y,C,A) {invisibleBuf[Y][X].Char.AsciiChar=C; invisibleBuf[Y][X].Attributes=A; }
- #define is_down(K) GetAsyncKeyState(K)&(1<<16)
- HANDLE stdHandle;
- CHAR_INFO invisibleBuf[70][90];
- void toScreen() {
- SMALL_RECT r{0, 0, 90, 70};
- WriteConsoleOutput(stdHandle, (const CHAR_INFO*)&invisibleBuf, COORD{90, 70}, COORD{0, 0}, &r);
- }
- int attr = 0;
- void drawImg(int x, int y, long long img) {
- while(img) {
- for(int i = 0; i < 8; i++) {
- set_char(x, y, ((img) & 1) ? 219 : ' ', attr);
- x++;
- img>>=1;
- }
- x -= 8;
- y--;
- }
- }
- void clearScreen() {
- for(int i = 0; i < 90 * 70; i++)
- set_char(i, 0, 0, 0);
- }
- int pX = 0;
- int bX, bY = -1;
- void handleInput() {
- if(is_down('A'))
- pX--;
- if(is_down('D'))
- pX++;
- pX = pX < 0 ? 0 : (pX > 80 ? 80 : pX);
- if(is_down(32) && bY == -1) {
- Beep(500, 30);
- bX = pX + 2;
- bY = 65 - 3;
- }
- if(bY == -1)
- bX=-1;
- else
- bY--;
- }
- void drawPlayer() {
- attr = 10;
- drawImg(pX, 65, 0x40E1F);
- if(bY>=0)
- set_char(bX, bY, 'o', 10);
- }
- int ePos = 0, mv = 0;
- //int enemies[] =
- void drawEnemies() {
- if(mv++ % 8 & 1)
- ePos++;
- int xOffset = (ePos / 13) % 2 ? (13 - (ePos % 13)) : ePos % 13;
- int yOffset = ePos / 13;
- for(int i = 0; i < 15; i++) {
- attr = i&1 ? 15 : 14;
- drawImg(xOffset + i%5 * 16, yOffset + 8 + i/5 * 10, 0x183C7EDBFF245AA5);
- }
- if(yOffset > 35) {
- Beep(200, 300);
- }
- }
- void loop() {
- l:
- clearScreen();
- handleInput();
- drawPlayer();
- drawEnemies();
- //drawImg(6, 24, 0x66C366FF7EFF66C3);
- toScreen();
- Sleep(50);
- goto l;
- }
- int main() {
- stdHandle = GetStdHandle(-11);
- loop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement