7-Seg Multiplexing Help!

Dice game with Multiplexing(pnp and npn transistors). I swear there's probably something small and stupid that I'm missing. It will display the pattern while the button(pin 10) is held, but when I release the button I get nothing. Yes I'm aware I'm doing this the long tedious way with all my high and lows for the segments but whatever.

//Here's the code

void sevenseg1 (byte);
void sevenseg2(byte); //Displays the result of the dice roll as a multiplexed output to the display.
void pattern(void); //Displays the pattern.
void start(void); //Function for display all the LEDs.
byte randnum1, randnum2;

bool startup = true; //This bool is set to be true on startup of the Arduino as global variable.

void setup() {

pinMode(2, OUTPUT); //Segment A
pinMode(3, OUTPUT); //Segment B
pinMode(4, OUTPUT); //Segment C
pinMode(5, OUTPUT); //Segment D
pinMode(6, OUTPUT); //Segment E
pinMode(7, OUTPUT); //Segment F
pinMode(8, OUTPUT); //Segment G
pinMode(9, OUTPUT); //Pin 9 is the pin which controls the transistors.

pinMode(10, INPUT_PULLUP); //For pushbutton.
randomSeed(analogRead(0)); //A random seed.

}

void loop()
{
byte randnum1 = 0, randnum2 = 0; //Here I declare two variables for each dice.

while (startup == true ) //This is true upon startup.
{
start(); //Display all the LEDs as on to confirm they are good.
if (digitalRead(10) == LOW) //When the button is pressed.
startup = false; //Program is no longer is startup.
}

while (startup != true ) //This condition is only true if the program is not in startup.
{
if (digitalRead(10) == LOW) //If the button is pressed.
{
pattern(); //Displays the pattern.
}

while(digitalRead(10) == HIGH); //While the button is not pressed.
{
digitalWrite(9, LOW);
byte randnum1 = random(1,7);
sevenseg1(randnum1);
delay(10);
digitalWrite(9, HIGH);
byte randnum2 = random(1,7);
sevenseg2(randnum2);
delay(10);//Write to top segment
}
}
}

void sevenseg1(byte)
{
if (randnum1 ==1)
{digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
if (randnum1 ==2)
{digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
if (randnum1 == 3)
{digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
if (randnum1 ==4)
{digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
if (randnum1 ==5)
{digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
if (randnum1 ==6)
{digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
}

void sevenseg2(byte)
{
if (randnum2 ==1)
{digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
if (randnum2 ==2)
{digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
if (randnum2 == 3)
{digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
if (randnum2 ==4)
{digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
if (randnum2 ==5)
{digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
if (randnum2 ==6)
{digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
}

void pattern(void)
{

digitalWrite(2, HIGH);
digitalWrite(3, HIGH); //E
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(100);

digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH); //F
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(100);

digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH); //A
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(100);

digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH); //B
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(100);

digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW); //C
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(100);

}

void start(void) //For displaying all of the segments.
{
byte i = 0, w = 0;

for (i = 0; i < 7; i++) //Write to each segment of the display
{
w = bitRead(128, i); //128 corresponds to all 1s.
if (w)
{
digitalWrite (i, HIGH);
}
else
{
digitalWrite(i, LOW);
}
}
digitalWrite(9, LOW); //Set the top segment on.
delay(10);
digitalWrite(9, HIGH); //Set the bottom segment off.
delay(10);
}

Yes I'm aware I'm doing this the long tedious way with all my high and lows for the segments but whatever.

You have not posted the code correctly, read the how to use this forum sticky post.
The code has a crap structure.

The code does what you asked it to do, if you want to do something different then write something different.

Learning is about attitude, you don’t seem to have the right one. But whatever.

The code seems to have nothing to do with multiplexing like the title implies but whatever.

randnum1 = 0, randnum2 = 0;      //Here I declare two variables for each dice.

With exactly the same names as two global variables you declared. But whatever.

You are not passing variables correctly into functions, but whatever.

There is no need to pre-declare functions, but whatever.

Please modify your post so that code is listed in code tags, as described in the forum guide in the sticky post. If you did not perform an Auto-Format, please do that and re-post.

Also you must post a schematic, or it will be very difficult to help you.

The emitter of transistor I think npn should be connected to ground, that this transistor will act as switch, and second one emitter to vcc.
Otherwise, conecting emitter to diode, will cause base put voltage higher then voltage on led.
Check connection how you connect transistors to leds.