1. Список говнокодов пользователя o0oflashero0o

    Всего: 1

  2. C++ / Говнокод #14288

    +23

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    //VS 2010 C++
    #include <Windows.h>
    #include <time.h>
    #include <queue>
    #pragma comment(lib, "winmm.lib")
    char shapeForms[7][4][5][6] = {{{{0,0,0,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,1,1,1,1},{0,0,0,0,0}},{{0,0,0,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,0,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,1,1,1,1},{0,0,0,0,0}}},{{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,1,1,0}}},{{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,1},{0,0,0,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,0,0,1,1},{0,0,0,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,0,1,1,1},{0,0,0,0,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,0,1,1,0},{0,0,0,1,0}}},{{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,0,1,1}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,0,1,1,0},{0,0,1,0,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,0,1,1}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,0,1,1,0},{0,0,1,0,0}}},{{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,1},{0,0,1,0,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,0,1,0},{0,0,0,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,1,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,1,0,0},{0,0,1,0,0},{0,0,1,1,0}}},{{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,1},{0,0,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,1,0,0},{0,0,1,1,0},{0,0,0,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,1},{0,0,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,1,0,0},{0,0,1,1,0},{0,0,0,1,0}}},{{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,1},{0,0,0,0,1}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},{0,0,1,0,0},{0,0,1,0,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,1,0,0,0},{0,1,1,1,0}},{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,1,0},{0,0,0,1,0},{0,0,1,1,0}}}}, field[32][28] = {0}, shape[5], shape_r[5], modifiers[4][3] = {{0,-1,0},{0,1,0},{1,0,0},{0,0,64}}, keys[4] = {'A', 'D', 'W', 'S'}, keyPressed = -1, lk = 0; //shape - 1: shape state; 2: shape type; 3: y; 4: x;
    std::queue<std::pair<COORD, std::pair<char, char>>> paste;
    COORD t;
    unsigned int Score(0);
    void draw(COORD cd, char c) {if((cd.Y = cd.Y - 4)||true) if(cd.Y >= 0) {SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cd);
    printf("%c", c);}}
    bool next_frame(bool mode, bool isShapeFell) {for(char y(0); y != 5; ++y) {for(char x(0); x != 6; ++x) {t.X = shape[4]+x; t.Y = shape[3]+y; 
    			if(shapeForms[shape[2]][shape[1]][y][x] == 1) {if(field[t.Y][t.X] == 0) paste.push(std::make_pair(t, std::make_pair(-37, 1)));
    				if(field[t.Y][t.X] == 2 || field[t.Y][t.X] == 3) isShapeFell = true;}else if(field[t.Y][t.X] == 1) paste.push(std::make_pair(t, std::make_pair(32, 0)));}}
    	if(isShapeFell) {while(paste.size()) paste.pop();
    		if(mode) for(char i(0); i != 31; ++i) for(char j(0); j != 25; ++j) if(field[i][j] == 1) field[i][j] = 3;
    		return false;}else {for(paste; paste.size() != 0; paste.pop()) {draw(paste.front().first, paste.front().second.first);
    			field[paste.front().first.Y][paste.front().first.X] = paste.front().second.second;}}
    	return true;}
    bool clearFullLines() {for(char isLineExist(1); isLineExist == 1;) {isLineExist = 0;
    		for(char j(0), up(0), down(0), cnt(0); j != 31; (++j) && (cnt = 0)) {for(char i(3); i != 25; ++i) if(field[j][i] == 3) if(j < 5) return false; else cnt++;
    			if(cnt == 22) {if(isLineExist == 0 && (isLineExist = 1) && (down = j)) up = j;
    			else down = j;}else if(isLineExist == 1 && (Score = Score + down-up+1)) {for(char q = down, tmp(0); q >= char(4); (--q)) for(char p(3); p != 25; (++p) && (tmp = 0)) {for(t.X = p, t.Y = q; tmp == 0; tmp = 1);
    					field[q][p] = 0; draw(t, 32);
    					if(field[up+q-down-1][p] == 3) draw(t, -37);
    					t.Y = up+q-down-1;
    					field[q][p] = field[up+q-down-1][p];
    					field[up+q-down-1][p] = 0;}
    				goto next_search;}}
    	next_search:;}
    	return true;}
    int main() {timeBeginPeriod(2);
    	system("mode con cols=42 lines=28");
    	srand(clock()+time(NULL));
    	memset(field, 2, sizeof(field));
    	for(char i(0); i != 28; ++i) for(char j(0), q(0); j != 32; ++j && (q = 0)) for(t.X = i, t.Y = j; q == 0; q = 1) draw(t, -80);
    	for(char i(3); i != 25; ++i) for(char j(0), q(0); j != 30; ++j && (q = 0)) for(t.X = i, t.Y = j; q == 0; (q = 1) && (field[j][i] = 0)) draw(t, 32);
    	for(int tm = 100;true;) {next_turn: if(!clearFullLines() && printf("You fail!")) {system("pause");
    			return 0;}
    		for(t.X = 30, t.Y = 5; false;);  
    		SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), t);
    		printf("Score: %i ", Score);
    		shape[1] = rand()*4/(RAND_MAX+1); shape[2] = rand()*7/(RAND_MAX+1); shape[4] = rand()*20/(RAND_MAX+1)+3;
    		for(shape[3] = 0; true; shape[3]++) {for(char h(0); h != 5; ++h) {Sleep(tm); tm = 70;
    				for(char i(0); i != 4 && keyPressed == -1; ++i) if(GetKeyState(keys[i]) < 0) keyPressed = i;
    				if(keyPressed != -1 && !(lk == keyPressed && lk == 2)) {for(char j(0); j != 5; ++j) shape_r[j] = shape[j];
    					shape[4] += modifiers[keyPressed][1]; shape[1] = (shape[1] + modifiers[keyPressed][0])%4;
    					tm -= modifiers[keyPressed][2];
    					lk = keyPressed;
    					keyPressed = -1; 
    					if(!next_frame(false, false)) {for(char j(0); j != 5; ++j) shape[j] = shape_r[j];
    						if(!next_frame(true, false)) goto next_turn;}}else {if(!next_frame(true, false)) goto next_turn;
    					if(keyPressed == -1) lk = -1;
    					if(lk != 2) lk = 0;else keyPressed = -1;}}}}}

    Была задача за минимальное кол-во строк реализовать простой тетрис. Особого внимания заслуживает 6 строчка кода. Всё очень плохо?
    Управление WSAD.

    o0oflashero0o, 26 Декабря 2013

    Комментарии (75)