zoukankan      html  css  js  c++  java
  • 爬格子呀--2048

    好长时间没写啦,中间花了一段时间学习了一下数据结构的知识,因为我的专业并不学这个,想要在码农的路上走的更远,怕是自己还得多学一点呀;

    国庆去了一趟长沙张家界也耽误了一段时间,要不会更早完成的;

    本来这段小代码是想送给一个人玩的,结果懒得调试了也就不送了哈哈哈,被人家笑话,坏习惯坏习惯,得改,嘿嘿(挠头);

    代码如下:

    #include<cstdio>
    #include<stdlib.h> 
    #include<time.h>
    #include<string.h>
    
    const int N = 4;
    int a[N][N] = {0};
    int x = 0, y = 0, num = 0;
    
    int getRand() {
        return rand() / (RAND_MAX + 1.0)*15+1;
    }
    
    void print_board() {
        int i, j;
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++) {
                printf("%d", a[i][j]);
                while (j % 3 == 0 && j != 0) {
                    printf("
    ");
                    break;
                }
            }
        }
    }
    
    void generator() {
        num = getRand() > 12 ? 2 : 4;
    }
    
    void insert() {
        generator();
        int i = getRand();
        x = i / 4;
        y = i % 4;
        if (a[x][y] == 0) {
            a[x][y] = num; 
        }
        else insert();
    }
    
    
    void col_change(int i, int j, int flag) {
        int ini = i;
        while (j < N) {
            if (a[i][j] == a[i + flag][j]) {
                a[i][j] += a[i + flag*2][j];
                while (i + flag*2 <= N - 1) {
                    a[i + flag][j] = a[i + flag*2][j];
                    a[i + flag*2][j] = 0;
                    i++;
                }
                i = ini;
                j++;
            }
            else {
                i += flag;
                continue;
            }
        }
    }
    
    
    void row_change(int i, int j, int flag) {
        int ini = j;
        while (i < N) {
            if (a[i][j] == a[i][j + flag]) {
                a[i][j] += a[i][j + flag * 2];
                while (j + flag * 2 <= N - 1) {
                    a[i][j + flag] = a[i][j + flag * 2];
                    a[i][j + flag * 2] = 0;
                    j++;
                }
                j = ini;
                i++;
            }
            else {
                j += flag;
                continue;
            }
        }
    }
    
    
    int main() {
        print_board();
        char cmd;
        insert();
        while (scanf_s("%c",&cmd)){
            if (cmd == '#')
                break;
            switch (cmd) {
            case('w'):
                insert();
                col_change(0,0,1);
                print_board();
                break;
            case('s'):
                insert();
                col_change(N - 1, 0, -1);
                print_board();
                break;
            case('a'):
                insert;
                row_change(0, 0, 1);
                print_board();
                break;
            case('d'):
                insert;
                row_change(0, N - 1, -1);
                print_board;
                break;
            }           
        }
        return 0;
    }
  • 相关阅读:
    strtok() and strtod()
    quernation,euler,rotationmatrix之间的相互转换
    Ubuntu16.04+Ros+Usb_Cam ORB SLAM2
    windows10下VS2013搭建opencv2.4.9吐血之作
    深度学习之numpy.poly1d()函数
    matplotlib动态图subplots()和subplot()不同及参数
    python学习之matplotlib绘制动图(FuncAnimation()参数)
    javascipt——jQuery
    Javascript——(2)DOM
    linux nc 命令详解
  • 原文地址:https://www.cnblogs.com/romaLzhih/p/9489866.html
Copyright © 2011-2022 走看看