Probability of Reaching Specific Point Value in a Soccer (Football) League The question goes like this:

In a soccer league, wins, draws, and losses each yield $3,1,0$ points, resepectively. In $x$ games, what is the probability that a specific team has at least $y$ points $(0 \le y \le 3x)$ if winning, losing, and drawing happen with the same probability.

I tried making the sequence of events a string like "3331300313" (3 refers to win, 1 refers to draw, and 0 refers to loss), and each string would have a specific point value and equal probability of showing up. If the point value sums to be at least $y$, then this case works.
Now all we have to is to count the number of such strings and divide it by $3^x$ as each occurs with same probability and there are $3^x$ total strings. However, counting the number of such strings is hard, especially with a variable point goal such as $y$. For example, if $x=3$ and $y=3$, then "$300$" (and its permutations) and "$111$" (with its permutations) would both work, let alone the cases where the number of total points is greater than $3$. The number of cases increases dramatically as $x$ and $y$ increases.
That's all I've gotten so far, and I'm stuck trying to account for all those cases.
Offering a solution to this problem or continuing this path of thinking would both be appreciated.
If possible, please also answer this add-on to the original question:

What happens if the probability of each event is not the same? Namely let the team have a chance of winning, drawing, and losing with probabilities $a,b,c$, respectively. ($a+b+c=1$.)

Note that this is just a problem I made for fun, so I have computer's help if computations get too messy!  However, I don't want to do simulations because I want exact results instead of approximates.
Any help would  be appreciated.
 A: Addendum added to respond to :

What happens if the probability of a win, draw, or loss is $a,b,c,$ respectively, where $(a + b + c) = 1.$


Since I am totally ignorant of generating functions, I will provide a very crude closed form expression.  First, I will show the formula, and then I will explain it.  The probability of scoring at least $(y)$ is:
$$\frac{\sum_{k=0}^{x} f(k)}{3^x}, \tag1 $$
where $f(k)$ is defined as follows:

*

*For $(k)$ such that $~(3k) + (x-k) < y, ~f(k) = 0.$


*For $(k)$ such that $\displaystyle ~3k \geq y, 
~ f(k) = \binom{x}{k}2^{x-k}.$


*For all other values of $(k)$: 
$\displaystyle f(k) = \binom{x}{k} \left[\sum_{t = y-3k}^{x-k}\binom{x-k}{t}\right].$
For $k$ such that $3k + (x-k) < y$, if you have exactly $k$ wins, none of the results can be favorable.
For $k$ such that $3k \geq y$, then all of the ways that the $(x-k)$ games might be decided will automatically be favorable.
For the middle values of $k$, the base value for the number of draws, $(t)$, is such that $(3k) + t = y.$  Here, the number of distinct ways of having $(k)$ wins and $(t)$ draws is $~\displaystyle \binom{x}{k} \times \binom{x-k}{t}.$

Addendum

What happens if the probability of a win, draw, or loss is $a,b,c,$ respectively, where $(a + b + c) = 1.$

The analysis will be very similar to the first part of my answer.  The only difference is that each of the $3^x$ possibilities, both favorable and unfavorable, must be weighted.
For specific values of $k$ wins and $t$ draws, 
let $~g(k,t)~$ denote $~\displaystyle \binom{x}{k}\times \binom{x-k}{t} \times k^a \times t^b \times (x - k - t)^c.$
Then, $~g(k,t)~$ represents the probability of having exactly $(k)$ wins and $(t)$ draws.
Therefore, the probability of scoring at least $(y)$ is:
$$\frac{\sum_{k=0}^{x} h(k)}{\sum_{k=0}^{x} \left[\sum_{t=0}^{x-k}\ g(k,t)\right]}, \tag1 $$
where $h(k)$ is defined as follows:

*

*For $(k)$ such that $~(3k) + (x-k) < y, ~h(k) = 0.$


*For $(k)$ such that $\displaystyle ~3k \geq y,$ 
$\displaystyle h(k) = \sum_{t=0}^{x-k} g(k,t).$


*For all other values of $(k)$: 
$\displaystyle h(k) = \sum_{t=y - 3k}^{x-k} g(k,t).$
So, the structure of the answer in the Addendum parallels the structure of the first part of my answer.  In the Addendum however, the various permutations are weighted.
A: The generating function way must be the most straight-forward one. For the weighted case just put $a, b$ and $c$ as coefficients of $1, z$ and $z^3$: $(c+bz+az^3)^x$.
But counting those $\{0,1,3\}$-strings of length $x$ summing to at least $y$ can be done recursively. Denote the number of these by $f(x, y)$. We have
$$f(x,y) = \cases{
1, & $x=0, y \leq 0$ \\
0, & $x=0, y>0$ \\
f(x-1, y) + f(x-1, y-1) + f(x-1, y-3), &otherwise
}$$
Here's a Sage-code for the generating function way and the recursive way (I believe the recursive one is also pure Python):
def gf(x,y):
    R.<z> = QQ[]
    return sum(c for p,c in enumerate(list((1+z+z^3)^x)) if p>=y)


def recF(x,y, memo={}):
    if x==0: return 1 if y<=0 else 0
    memoKey = (x, y)
    if memoKey in memo: return memo[memoKey]
    ret = sum(recF(x-1, y-k, memo) for k in (0,1,3))
    memo[memoKey] = ret
    return ret

Yet another way would be to construct a Markov Chain where state denotes the number of wins and goes up to $y$ and we make that state absorbing. A step is a happening of a game and it increments the state by $0, 1$, or $3$ with the probabilities of lose, tie and win. We take the $x$th power of the transition matrix and look at its top right element. That is the probability of getting at least $y$ points in $x$ games.
Code:
def markov(x, y, ps=(1/3,)*3):
   mat = matrix(QQ, y+1)
   for i in range(y+1):
        for k,p in zip((0,1,3),ps):
            mat.add_to_entry(i, min(y, i+k), p)
    return (mat^x)[0][y]

This has the advantage that if $x$ is very large (but $y$ stays moderate (*)), the calculation is still fast. This is because the power of a matrix can be computed by the repeated squaring algorithm in logarithmic time. However the denominators of the elements might get very large and that starts to slow down the calculation. For the case $(\frac{1}{3}, \frac{1}{3}, \frac{1}{3})$ you coud do the calculation with integers (add $1$ to the entry $i, \min(y, i+k)$ instead of $p$ in the "transition probability loop". Then divide the answer by $3^x$. The elements (now integers) do still become large, but at least we don't have to do rational number calculations.
(*) although you don't expect this to happen, since more games means more wins if the probabilities of win and tie aren't very small.
