I'll answer this question on a general level and ignore the fact that you're playing Vintage. Vintage is a very dangerous format because the power level is so high: top decks in Vintage are capable of winning on turn 1, and they're filled with insanely powerful cards such as Ancestral Recall and Black Lotus. The power level makes it a hazardous format where many decks (such as the one your friend is playing) simply isn't viable. Your comments make it clear though that you're not playing Vintage - you're playing a casual format. That's fine and gives more scope for this kind of deckbuilding.
First: manabase. You say you're running three colors. This is potentially possible if you have enough lands that produce multiple colors. Do you have access to, for example, Volcanic Island, Rootbound Crag or Stomping Ground? The more of these dual lands you have, and especially if you have fetchlands like Scalding Tarn that can tutor for the relevant color, the more viable it is to run three colors.
The manabase is important! If you don't have access to these dual lands, you might not be able to cast your spells. Being mana/color screwed is a very miserable way to lose. It's better to ditch a color and play 2-color decks or even 1-color decks in that case. If you do have these dual lands, you can play 3-color or even 4-color decks, but you need to have the lands. Do you? If not, and the other players don't mind, you can try proxy-ing some of them (e.g. take a Mountain and turn it into a Taiga).
Second: how to make a deck more resilient to control. What control decks do is they kill/counter all your creatures. If some creatures slip through, they play a sweeper like Supreme Verdict that kills all of them. The first thing to do is to have a high density of threats. If you draw more threats than the control deck draws answers (remember they're probably running 26 or more lands, which means you'll draw more spells than them), then you can brute force a threat through. This isn't foolproof however, since they can afford to take some damage, and control decks are generally going to have card advantage spells like Divination that lets them draw more answers. Still, the fewer non-threat cards you have such as Giant Growth or Growth Spiral, the better your chances.
Another thing to do is to have threats that survive the sweeper. I don't know what sweepers the control decks you allude to are playing, but some generic ideas are:
- Planeswalkers. Cards like Gideon, Ally of Zendikar are perfect because they're unaffected by "destroy all creatures" sweepers. You don't ever have to animate Gideon to attack: you can just sit there and make 2/2 tokens until the opponent is forced to sweep, and then you can make more 2/2 tokens. Planeswalkers are some of the most threatening cards against control decks since they're also immune to creature removal.
- Vehicles. Cards like Smuggler's Copter also survives "destroy all creatures" sweepers. This is vulnerable to instant-speed creature removal though (such as Murder), which control decks will also have a lot of.
- Manlands. A card like Raging Ravine is immune to sorcery-speed sweepers. Like vehicles however, manlands are also vulnerable to instant-speed creature removal.
- Creatures that survive sweepers. Some creatures simply live through these "destroy all creatures" cards. An example is Adanto Vanguard. If opponent casts Supreme Verdict, you can pay four life (they're a control deck and don't pressure your life total) to make it indestructible, and it survives. Other examples are Rekindling Phoenix or Conclave Cavalier. In the last example, Conclave Cavalier itself dies, but it still leaves behind 4 power.
Other things you can do:
- Hexproof threats. Geist of Saint Traft is dangerous against control for this reason: if they can't counter it, the opponent must sweep since they can't kill it with targeted removal. Sweepers tend to cost a lot of mana. If you can trade 1-for-1 (your Geist for his sweeper) at mana advantage, you've gained an advantage.
- Uncounterable threats. Same as the above, except this takes out the "counter it" part of their plan. If the creature you want to play doesn't have uncounterable, you can make it uncounterable with Cavern of Souls.
- Discard. Control decks rely on holding specific answers for specific threats - for example Dead Weight is great against Adanto Vanguard, but is a dead card against Geist of Saint Traft. Meanwhile Supreme Verdict is great against Geist of Saint Traft, but is a dead card against Adanto Vanguard. This makes targeted discard like Thoughtseize very effective. If you play Thoughtseize, you can take the card that kills your threat. For example if you have Adanto Vanguard, you can take the Dead Weight and rely on the now-unanswerable Vanguard to kill your opponent. Similarly, Thoughtseize protects you against sweepers since it can remove the sweeper before it's cast.
- Counterspells. If you've got a nice board, sometimes the opponent's only viable way to get back into the game is with a big spell. Cards like Disdainful Stroke and Negate are especially good in these situations because you can simply stop the spell from resolving. For example, if you have two Steel Leaf Champion in play, the opponent will die in two turns so they have to play some kind of removal. If you are able to counter this, they take 10 damage and are that much closer to dying. The danger with playing counterspells is, if you draw them but don't draw threats, you're still going to lose. Don't play too many counterspells.
You can read a bit more about this in this classic article by Hall of Famer Paulo Vitor Damo da Rosa. It deals with sideboarding, which you presumably aren't doing, but the concepts are the same.
Third: you can also play better. The key ideas are to 1) not overextend into sweepers and 2) not let the control deck use their mana. This is not easy to do, however, and it's psychologically frightening to do nothing against a control deck even if they are also doing nothing. If you want to learn more about how to play against control decks, I suggest reading this article.