Getting 3 LED loops to run "simultaneously" help please

Hi everyone, first time Arduino user and poster here with zero coding knowledge but eager to learn.

I'd like to use my Arduino to control the lighting effects on my model Start Trek Enterprise, which is in the form of strobing LEDs, LEDs which fade and LEDs which run in sequence, all of which are loops.

I have the code for all three to run separately but I have no idea how to integrate the coding so they can run at the same time. Any help with this would be amazing because I'm stumped.

I've included my codes below as I've seen others do...

Strobe blink code

int led = 13;

void setup() {                
  
  pinMode(led, OUTPUT);     
}

void loop() {
  digitalWrite(led, HIGH);  
  delay(30);              
  digitalWrite(led, LOW);   
  delay(150);               
  digitalWrite(led, HIGH);
  delay(30);
  digitalWrite(led, LOW);
  delay(1000);
}

Fading LED

int led = 9;           
int brightness = 50;    
int fadeAmount = 5;    


void setup()  { 
  
  pinMode(led, OUTPUT);
} 


void loop()  { 
  
  analogWrite(led, brightness);    

 
  brightness = brightness + fadeAmount;

  
  if (brightness == 50 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
   
  delay(20);                            
}

Sequential LEDs

int delayTime = 0;
void setup()
{
  pinMode(8, OUTPUT);        
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}
void loop()       
{
  delayTime = analogRead(0);                   
  digitalWrite(8, HIGH);    delay(70);
  digitalWrite(8, LOW);    delay(0);
  digitalWrite(9, HIGH);    delay(70);
  digitalWrite(9, LOW);    delay(0);
  digitalWrite(10, HIGH);  delay(70);
  digitalWrite(10, LOW);  delay(0);  
}

You have to get rid of the delay() calls using the “BlinkWithoutDelay” technique. Try something like this:

const int CheekPins[] = {
  3,4,5,6,7,8,9,8,7,6,5,4};  // gives forward and back
const int CHEEK_COUNT = sizeof CheekPins / sizeof (int);
const int CheekIntervals[] = 
{
  300, 300, 300, 300, 300, 300, 
  300, 300, 300, 300, 300, 300} 
;  // Milliseconds
unsigned long CheekTime = millis();
int CheekStep = 0;

const int ChinPins[] = {
  10,11,12,13};
const int CHIN_COUNT = sizeof ChinPins / sizeof (int);
const int ChinIntervals[] = {
  300, 300, 300, 300} 
;  // Milliseconds
unsigned long ChinTime = millis();
int ChinStep = 0;

void setup() 
{
  int i;
  /* Cheek LED's */
  for (i=0; i< CHEEK_COUNT; i++)
    pinMode(CheekPins[i], OUTPUT);  // Yes, it's OK to set the pinMode twice on some pins

  /* Chin LED's */
  for (i=0; i< CHIN_COUNT; i++)
    pinMode(ChinPins[i], OUTPUT);
}

void loop()
{
  // Do the cheek animation
  if ((millis() - CheekTime) > CheekIntervals[CheekStep])
  {
    CheekTime = millis();
    digitalWrite(CheekPins[CheekStep], LOW);
    CheekStep = (CheekStep+1) % CHEEK_COUNT;
    digitalWrite(CheekPins[CheekStep], HIGH);
  }

  // Do the chin animation
  if ((millis() - ChinTime) > ChinIntervals[ChinStep])
  {
    ChinTime = millis();
    digitalWrite(ChinPins[ChinStep], LOW);
    ChinStep = (ChinStep+1) % CHIN_COUNT;
    digitalWrite(ChinPins[ChinStep], HIGH);
  }
}

I have a sketch call Multiblink that allows you to set up this sort of stuff just by changing data tables in the code. See the code repository link below if you are interested.

You need to implement a state machine (same advice as john )
Read
http://www.thebox.myzen.co.uk/Tutorial/State_Machine.html

Thanks for your replies guys, I've been super busy and haven't had a chance to try your suggestions out yet. I'm hoping to give it a bash this weekend and I'll let you know how I get on.