Tips for condensing code

I am currently playing with some code to incorporate into a larger program later. I wrote some code that with the push of one button counts up on a 4 digit display and goes down one when another button is pressed. What are some tips for compressing code? Also is there an easier way to count on this display.

This is some of the code i wrote to far.

/*

    A
   ---
F |   | B
  | G |
   ---
E |   | C
  |   |
   ---
    D
 */
 
// Pin 2-8 is connected to the 7 segments of the display.

int pinA = 2;
int pinB = 3;
int pinC = 4;
int pinD = 5;
int pinE = 6;
int pinF = 7;
int pinG = 8;
int D1 = 9;
int D2 = 10;
int D3 = 11;
int D4 = 12;

const int Plus = A4;
const int Minus = A3;

int buttonPushCounter = 0;
int PlusState = 0;
int lastPlusState = 0; 
int MinusState = 0;
int lastMinusState = 0;


int NumZero(){
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);
  digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, HIGH);
}

int NumOne(){
  
  digitalWrite(D1, HIGH);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);
  
  delay(1);
  
  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, HIGH);
  
  digitalWrite(pinA, HIGH);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, HIGH);   
  digitalWrite(pinE, HIGH);     
  digitalWrite(pinF, HIGH);   
  digitalWrite(pinG, HIGH);
  
  delay(1);
}

int NumTwo(){
  
  digitalWrite(D1, HIGH);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);
  
  delay(1);
  
  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, HIGH);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, HIGH);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, HIGH);   
  digitalWrite(pinG, LOW);

  
  delay(1);
}

int NumThree(){
    
  digitalWrite(D1, HIGH);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);
  
  delay(1);
  
  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, HIGH);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, HIGH);     
  digitalWrite(pinF, HIGH);   
  digitalWrite(pinG, LOW);
  
  delay(1);
}

int NumFour(){
    
  digitalWrite(D1, HIGH);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);

  delay(1);

  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, LOW);
  
  digitalWrite(pinA, LOW);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, LOW);   
  digitalWrite(pinE, LOW);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, HIGH);
  
  delay(1);
  
  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, HIGH);
  
  digitalWrite(pinA, HIGH);   
  digitalWrite(pinB, LOW);   
  digitalWrite(pinC, LOW);   
  digitalWrite(pinD, HIGH);   
  digitalWrite(pinE, HIGH);     
  digitalWrite(pinF, LOW);   
  digitalWrite(pinG, LOW);
  
  delay(1);
}





void setup() {                
  // initialize the digital pins as outputs.
  pinMode(pinA, OUTPUT);     
  pinMode(pinB, OUTPUT);     
  pinMode(pinC, OUTPUT);     
  pinMode(pinD, OUTPUT);     
  pinMode(pinE, OUTPUT);     
  pinMode(pinF, OUTPUT);     
  pinMode(pinG, OUTPUT);   
  pinMode(D1, OUTPUT);  
  pinMode(D2, OUTPUT);  
  pinMode(D3, OUTPUT);  
  pinMode(D4, OUTPUT); 

  pinMode(Plus, INPUT_PULLUP);
  pinMode(Minus, INPUT_PULLUP);

  NumZero();

  Serial.begin(9600);
}

void loop() {


  Serial.println(buttonPushCounter);

  PlusState = digitalRead(Plus);

  MinusState = digitalRead(Minus);

  buttonPushCounter = constrain(buttonPushCounter, 0, 100); //dont allow value to go past 10 and 0
  
  if (PlusState != lastPlusState){

    if (PlusState == LOW){
      buttonPushCounter++; // if plus button is pushed add "1" to buttonPushCounter
    }
    delay(100); // delay to allow button release
  }
  lastPlusState = PlusState;

  if (MinusState != lastMinusState){
    if (MinusState == LOW){
      buttonPushCounter--; // if minus button is pushed subtract "1" from buttonPushCounter
    }
    delay(100); // delay to allow button release

      lastMinusState = MinusState;
  }
  
  if (buttonPushCounter == 0){
    NumZero();
  }
  
  else if (buttonPushCounter == 1){
    NumOne();
  }
  else if (buttonPushCounter == 2){
    NumTwo();
  }
  else if (buttonPushCounter == 3){
    NumThree();
  }
  else if (buttonPushCounter == 4){
    NumFour();
  }
  else if (buttonPushCounter == 5){
    NumFive();
  }
  else if (buttonPushCounter == 6){
    NumSix();
  }
  else if (buttonPushCounter == 7){
    NumSeven();
  }
  else if (buttonPushCounter == 8){
    NumEight();
  }
  else if (buttonPushCounter == 9){
    NumNine();
  }
  else if (buttonPushCounter == 10){
    NumTen();
  }

"Easier" is a bit subjective. The way you did it is very easy to understand and to write. But it takes a while and quite a bit of space. There are ways to make the code more compact, at the expense of more complex and harder to understand and debug.

The first place to start would be to look into arrays. Next, look into bit fields. Then, either switch statements or arrays of functions.

Here's the start of one way to add an array:

const byte pinA = 2;
const byte pinB = 3;
const byte pinC = 4;
...
const byte D4 = 12;

const byte segmentToPinMap[] = {pinA, pinB, pinC, pinD, pinE, pinF, pinG};
const boolean segments[][7] = {{LOW, LOW, LOW, LOW, LOW, LOW, HIGH},  // 0
                               {HIGH, LOW, LOW, HIGH, HIGH, HIGH, HIGH}, // 1
...
                               {LOW, LOW, LOW, LOW, HIGH, LOW, LOW}}; // 9

// To display a character, call displayDigit() and pass the digit to display

void displayOneChar(byte digit)
{
  for (byte i = 0; i < 7; ++i)
    digitalWrite(segmentToPinMap[i], segments[digit][i]);
}

...

void loop() {
  byte digitFour;
...

  digitalWrite(D1, LOW);
  digitalWrite(D2, LOW);
  digitalWrite(D3, LOW);
  digitalWrite(D4, LOW);

  digitFour = buttonPushCounter % 10;  // The last digit of the count.
  displayOneChar(digitFour);           // Connect the cathodes
  digitalWrite(D4, HIGH);              // Connect the anode for the fourth digit
  delay(1);
  digitalWrite(D4, LOW);
...