## Symbolic Representation

To solve the given problem, we first need to convert the natural language description into a symbolic representation. Let's define the variables and the objective function, as well as the constraints.

### Variables
- $x_1$: Number of deer shot
- $x_2$: Number of bears shot

### Objective Function
The objective is to maximize points, where each deer shot is 4 points and each bear shot is 10 points. Therefore, the objective function can be represented as:
\[ \text{Maximize:} \quad 4x_1 + 10x_2 \]

### Constraints
1. Shoot at least 5 deer: $x_1 \geq 5$
2. Shoot at least 2 bears: $x_2 \geq 2$
3. Shoot at most 10 deer: $x_1 \leq 10$
4. Shoot at most 5 bears: $x_2 \leq 5$
5. Shoot at most 12 animals in total: $x_1 + x_2 \leq 12$

## Symbolic Representation in JSON Format

```json
{
    'sym_variables': [('x1', 'deer'), ('x2', 'bears')], 
    'objective_function': '4*x1 + 10*x2', 
    'constraints': [
        'x1 >= 5', 
        'x2 >= 2', 
        'x1 <= 10', 
        'x2 <= 5', 
        'x1 + x2 <= 12'
    ]
}
```

## Gurobi Code in Python

```python
import gurobipy as gp

# Create a new model
model = gp.Model("Arcade Shooting Game")

# Define variables
x1 = model.addVar(lb=0, ub=gp.GRB.INFINITY, name="deer")  # Number of deer shot
x2 = model.addVar(lb=0, ub=gp.GRB.INFINITY, name="bears")  # Number of bears shot

# Set objective function
model.setObjective(4*x1 + 10*x2, gp.GRB.MAXIMIZE)

# Add constraints
model.addConstr(x1 >= 5, name="min_deer")
model.addConstr(x2 >= 2, name="min_bears")
model.addConstr(x1 <= 10, name="max_deer")
model.addConstr(x2 <= 5, name="max_bears")
model.addConstr(x1 + x2 <= 12, name="total_animals")

# Solve the model
model.optimize()

# Print solution
if model.status == gp.GRB.OPTIMAL:
    print(f"Optimal strategy: Shoot {x1.varValue} deer and {x2.varValue} bears.")
else:
    print("The problem is infeasible.")
```