breeding database is wrong, todo:fix
This commit is contained in:
parent
c41789e3a4
commit
9a246dd6b7
114
app.py
114
app.py
@ -3,53 +3,64 @@ import sqlite3
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
DATABASE = 'static/data/monsters.db'
|
||||
DATABASE = "static/data/monsters.db"
|
||||
|
||||
|
||||
def connect_db():
|
||||
return sqlite3.connect(DATABASE)
|
||||
|
||||
|
||||
@app.before_request
|
||||
def before_request():
|
||||
g.db = connect_db()
|
||||
|
||||
|
||||
@app.teardown_request
|
||||
def teardown_request(exception):
|
||||
if hasattr(g, 'db'):
|
||||
if hasattr(g, "db"):
|
||||
g.db.close()
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def show_index():
|
||||
return render_template("index.html")
|
||||
|
||||
@app.route('/get_families')
|
||||
|
||||
@app.route("/get_families")
|
||||
def get_families():
|
||||
cursor = g.db.cursor()
|
||||
cursor.execute('SELECT DISTINCT name FROM families')
|
||||
cursor.execute("SELECT DISTINCT name FROM families")
|
||||
families = [row[0] for row in cursor.fetchall()]
|
||||
return jsonify(families)
|
||||
|
||||
@app.route('/get_monsters')
|
||||
|
||||
@app.route("/get_monsters")
|
||||
def get_monsters():
|
||||
selected_family = request.args.get('family')
|
||||
selected_family = request.args.get("family")
|
||||
cursor = g.db.cursor()
|
||||
|
||||
if selected_family:
|
||||
cursor.execute('''
|
||||
cursor.execute(
|
||||
"""
|
||||
SELECT name FROM monsters
|
||||
WHERE family_id = (SELECT id FROM families WHERE name = ?)
|
||||
''', (selected_family,))
|
||||
""",
|
||||
(selected_family,),
|
||||
)
|
||||
else:
|
||||
cursor.execute('SELECT DISTINCT name FROM monsters')
|
||||
cursor.execute("SELECT DISTINCT name FROM monsters")
|
||||
|
||||
monsters = [row[0] for row in cursor.fetchall()]
|
||||
return jsonify(monsters)
|
||||
|
||||
@app.route('/monster/<monster_name>')
|
||||
|
||||
@app.route("/monster/<monster_name>")
|
||||
def monster_info(monster_name):
|
||||
cursor = g.db.cursor()
|
||||
|
||||
# Retrieve monster information from the database based on name
|
||||
cursor.execute('''
|
||||
cursor.execute(
|
||||
"""
|
||||
SELECT
|
||||
monsters.id, monsters.name, families.name AS family, monsters.in_story,
|
||||
monsters.agl, monsters.int, monsters.maxlvl, monsters.atk, monsters.mp,
|
||||
@ -59,7 +70,9 @@ def monster_info(monster_name):
|
||||
JOIN families ON monsters.family_id = families.id
|
||||
WHERE
|
||||
monsters.name = ?
|
||||
''', (monster_name,))
|
||||
""",
|
||||
(monster_name,),
|
||||
)
|
||||
|
||||
monster_info = cursor.fetchone()
|
||||
|
||||
@ -67,59 +80,38 @@ def monster_info(monster_name):
|
||||
abort(404)
|
||||
|
||||
# Retrieve skills for the monster
|
||||
cursor.execute('SELECT skill FROM skills WHERE monster_id = ?', (monster_info[0],))
|
||||
cursor.execute("SELECT skill FROM skills WHERE monster_id = ?", (monster_info[0],))
|
||||
skills = [row[0] for row in cursor.fetchall()]
|
||||
|
||||
# Retrieve spawn locations for the monster
|
||||
cursor.execute('SELECT map, description FROM spawn_locations WHERE monster_id = ?', (monster_info[0],))
|
||||
spawn_locations = [{'map': row[0], 'description': row[1]} for row in cursor.fetchall()]
|
||||
cursor.execute(
|
||||
"SELECT map, description FROM spawn_locations WHERE monster_id = ?",
|
||||
(monster_info[0],),
|
||||
)
|
||||
spawn_locations = [
|
||||
{"map": row[0], "description": row[1]} for row in cursor.fetchall()
|
||||
]
|
||||
|
||||
return render_template('monsters.html', monster={
|
||||
'id': monster_info[0],
|
||||
'name': monster_info[1],
|
||||
'family': monster_info[2],
|
||||
'in_story': 'Yes' if monster_info[3] else 'No',
|
||||
'agl': monster_info[4],
|
||||
'int': monster_info[5],
|
||||
'maxlvl': monster_info[6],
|
||||
'atk': monster_info[7],
|
||||
'mp': monster_info[8],
|
||||
'exp': monster_info[9],
|
||||
'hp': monster_info[10],
|
||||
'def': monster_info[11],
|
||||
'skills': skills,
|
||||
'spawn_locations': spawn_locations
|
||||
})
|
||||
|
||||
# Add a route for the breeding page
|
||||
@app.route('/breeding')
|
||||
def breeding():
|
||||
# Pass any necessary data to the breeding template (e.g., breeding_data)
|
||||
return render_template('breeding.html')
|
||||
return render_template(
|
||||
"monsters.html",
|
||||
monster={
|
||||
"id": monster_info[0],
|
||||
"name": monster_info[1],
|
||||
"family": monster_info[2],
|
||||
"in_story": "Yes" if monster_info[3] else "No",
|
||||
"agl": monster_info[4],
|
||||
"int": monster_info[5],
|
||||
"maxlvl": monster_info[6],
|
||||
"atk": monster_info[7],
|
||||
"mp": monster_info[8],
|
||||
"exp": monster_info[9],
|
||||
"hp": monster_info[10],
|
||||
"def": monster_info[11],
|
||||
"skills": skills,
|
||||
"spawn_locations": spawn_locations,
|
||||
},
|
||||
)
|
||||
|
||||
# Add this function to handle breeding logic
|
||||
def breed_monsters(parent1, parent2):
|
||||
# Implement your breeding logic here
|
||||
# For now, let's assume the result is a string
|
||||
result = f"{parent1} x {parent2} => Offspring Monster"
|
||||
return result
|
||||
|
||||
# Add this route for breeding
|
||||
@app.route('/breed', methods=['GET'])
|
||||
def breed():
|
||||
# Get parent monsters from query parameters
|
||||
parent1 = request.args.get('parent1')
|
||||
parent2 = request.args.get('parent2')
|
||||
|
||||
# Validate input (you may want to add more validation)
|
||||
if not parent1 or not parent2:
|
||||
return jsonify({'error': 'Invalid input'})
|
||||
|
||||
# Call the breeding function
|
||||
result = breed_monsters(parent1, parent2)
|
||||
|
||||
# Return the breeding result as JSON
|
||||
return jsonify({'result': result})
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True)
|
||||
|
@ -1,19 +0,0 @@
|
||||
// static/js/breeding.js
|
||||
|
||||
function breed() {
|
||||
var parent1 = document.getElementById("parent1").value;
|
||||
var parent2 = document.getElementById("parent2").value;
|
||||
|
||||
// Make an AJAX request to your Flask route for breeding logic
|
||||
// You can use fetch or another library for AJAX requests
|
||||
|
||||
// For demonstration purposes, we'll assume you have a Flask route named /breed
|
||||
fetch(`/breed?parent1=${parent1}&parent2=${parent2}`)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
// Display the breeding result in the breedingResult div
|
||||
var breedingResultDiv = document.getElementById("breedingResult");
|
||||
breedingResultDiv.innerHTML = `<p>Breeding Result: ${data.result}</p>`;
|
||||
})
|
||||
.catch(error => console.error('Error:', error));
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Dragon Warrior Monsters 2 - Breeding</title>
|
||||
<link rel="stylesheet" href="../static/style/output.css">
|
||||
</head>
|
||||
<body class="p-8">
|
||||
<h1 class="font-bold text-blue-500">Breeding Guide</h1>
|
||||
|
||||
<div class="mt-8">
|
||||
<h2 class="font-bold text-blue-500">Breeding Options</h2>
|
||||
|
||||
<div>
|
||||
<label for="parent1">Select Parent 1:</label>
|
||||
<select id="parent1" class="p-2 border border-gray-400">
|
||||
<!-- Add options dynamically based on breeding data -->
|
||||
{% for breed in breeding_data %}
|
||||
<option value="{{ breed.target }}">{{ breed.target }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<label for="parent2">Select Parent 2:</label>
|
||||
<select id="parent2" class="p-2 border border-gray-400">
|
||||
<!-- Add options dynamically based on breeding data -->
|
||||
{% for breed in breeding_data %}
|
||||
<option value="{{ breed.target }}">{{ breed.target }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<button onclick="breed()">Breed!</button>
|
||||
|
||||
<!-- Display breeding result -->
|
||||
<div id="breedingResult" class="mt-4"></div>
|
||||
</div>
|
||||
|
||||
<script src="{{ url_for('static', filename='js/breeding.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user