diff --git a/code/Hieu_L/captstone/final_project_game/final_project_game/settings.py b/code/Hieu_L/captstone/final_project_game/final_project_game/settings.py index 96141074..9c55ed8f 100644 --- a/code/Hieu_L/captstone/final_project_game/final_project_game/settings.py +++ b/code/Hieu_L/captstone/final_project_game/final_project_game/settings.py @@ -37,6 +37,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'main_game_app', ] MIDDLEWARE = [ @@ -115,7 +116,7 @@ # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.1/howto/static-files/ -STATIC_URL = 'static/' +STATIC_URL = 'main_game_app/static/' # Default primary key field type # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field diff --git a/code/Hieu_L/captstone/final_project_game/final_project_game/urls.py b/code/Hieu_L/captstone/final_project_game/final_project_game/urls.py index d3d4235a..19a3dd81 100644 --- a/code/Hieu_L/captstone/final_project_game/final_project_game/urls.py +++ b/code/Hieu_L/captstone/final_project_game/final_project_game/urls.py @@ -15,7 +15,18 @@ """ from django.contrib import admin from django.urls import path +from main_game_app import views +from main_game_app.views import inventory +from django.conf import settings +from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), -] + path('',views.landing, name='landing'), + path('inventory/', inventory.as_view(), name='inventory_page'), + path('fight/', views.fight, name='fight_page'), + path('move_data/', views.move_data, name="move_data"), + path('login/', views.login_page, name="login" ), + path('register/', views.register, name="register"), + path('profile/', views.profile, name='profile'), +] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/admin.py b/code/Hieu_L/captstone/final_project_game/main_game_app/admin.py index 8c38f3f3..7dcc2193 100644 --- a/code/Hieu_L/captstone/final_project_game/main_game_app/admin.py +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin +from .models import item # Register your models here. +admin.site.register(item) \ No newline at end of file diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0001_initial.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0001_initial.py new file mode 100644 index 00000000..1ec6546b --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0001_initial.py @@ -0,0 +1,28 @@ +# Generated by Django 4.1.4 on 2022-12-15 03:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='item', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=500)), + ], + ), + migrations.CreateModel( + name='player', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=30)), + ], + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0002_attack_item_defense_item_delete_item.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0002_attack_item_defense_item_delete_item.py new file mode 100644 index 00000000..8cd51d46 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0002_attack_item_defense_item_delete_item.py @@ -0,0 +1,32 @@ +# Generated by Django 4.1.4 on 2022-12-29 01:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='attack_item', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=500)), + ('attack', models.IntegerField()), + ], + ), + migrations.CreateModel( + name='defense_item', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=500)), + ('defense', models.IntegerField()), + ], + ), + migrations.DeleteModel( + name='item', + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0003_player_attack_items_player_defense_items.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0003_player_attack_items_player_defense_items.py new file mode 100644 index 00000000..bf3ed17d --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0003_player_attack_items_player_defense_items.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1.4 on 2022-12-29 23:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0002_attack_item_defense_item_delete_item'), + ] + + operations = [ + migrations.AddField( + model_name='player', + name='attack_items', + field=models.ManyToManyField(related_name='players', to='main_game_app.attack_item'), + ), + migrations.AddField( + model_name='player', + name='defense_items', + field=models.ManyToManyField(related_name='players', to='main_game_app.defense_item'), + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0004_item_remove_player_attack_items_and_more.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0004_item_remove_player_attack_items_and_more.py new file mode 100644 index 00000000..a3693f56 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0004_item_remove_player_attack_items_and_more.py @@ -0,0 +1,41 @@ +# Generated by Django 4.1.4 on 2023-01-02 20:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0003_player_attack_items_player_defense_items'), + ] + + operations = [ + migrations.CreateModel( + name='item', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=500)), + ('defense', models.IntegerField()), + ('attack', models.IntegerField()), + ], + ), + migrations.RemoveField( + model_name='player', + name='attack_items', + ), + migrations.RemoveField( + model_name='player', + name='defense_items', + ), + migrations.DeleteModel( + name='attack_item', + ), + migrations.DeleteModel( + name='defense_item', + ), + migrations.AddField( + model_name='player', + name='items', + field=models.ManyToManyField(related_name='players', to='main_game_app.item'), + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0005_delete_player.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0005_delete_player.py new file mode 100644 index 00000000..d57892fd --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0005_delete_player.py @@ -0,0 +1,16 @@ +# Generated by Django 4.1.4 on 2023-01-16 08:04 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0004_item_remove_player_attack_items_and_more'), + ] + + operations = [ + migrations.DeleteModel( + name='player', + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0006_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0006_item_image.py new file mode 100644 index 00000000..4a210271 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0006_item_image.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1.4 on 2023-01-16 08:23 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0005_delete_player'), + ] + + operations = [ + migrations.AddField( + model_name='item', + name='image', + field=models.ImageField(default=django.utils.timezone.now, upload_to='images/'), + preserve_default=False, + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0007_alter_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0007_alter_item_image.py new file mode 100644 index 00000000..37d432a0 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0007_alter_item_image.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.4 on 2023-01-16 08:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0006_item_image'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='image', + field=models.ImageField(upload_to='static/images'), + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0008_alter_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0008_alter_item_image.py new file mode 100644 index 00000000..8fb75f1c --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0008_alter_item_image.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.4 on 2023-01-16 09:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0007_alter_item_image'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='image', + field=models.ImageField(upload_to='static/'), + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0009_remove_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0009_remove_item_image.py new file mode 100644 index 00000000..163fcdb4 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0009_remove_item_image.py @@ -0,0 +1,17 @@ +# Generated by Django 4.1.4 on 2023-01-16 10:20 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0008_alter_item_image'), + ] + + operations = [ + migrations.RemoveField( + model_name='item', + name='image', + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0010_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0010_item_image.py new file mode 100644 index 00000000..16f09127 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0010_item_image.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1.4 on 2023-01-18 01:11 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0009_remove_item_image'), + ] + + operations = [ + migrations.AddField( + model_name='item', + name='image', + field=models.ImageField(default=django.utils.timezone.now, upload_to='images/'), + preserve_default=False, + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0011_alter_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0011_alter_item_image.py new file mode 100644 index 00000000..8903c468 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0011_alter_item_image.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.4 on 2023-01-18 01:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0010_item_image'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='image', + field=models.ImageField(upload_to='static/'), + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0012_alter_item_image.py b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0012_alter_item_image.py new file mode 100644 index 00000000..3440694d --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/migrations/0012_alter_item_image.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.4 on 2023-01-18 01:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main_game_app', '0011_alter_item_image'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='image', + field=models.ImageField(upload_to='main_game_app/static/'), + ), + ] diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/models.py b/code/Hieu_L/captstone/final_project_game/main_game_app/models.py index 71a83623..bbe4f316 100644 --- a/code/Hieu_L/captstone/final_project_game/main_game_app/models.py +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/models.py @@ -1,3 +1,11 @@ from django.db import models # Create your models here. + +class item(models.Model): + name = models.CharField(max_length=500) + defense = models.IntegerField() + attack = models.IntegerField() + image = models.ImageField(upload_to='main_game_app/static/') + def __str__(self): + return self.name diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/static/Stick.png b/code/Hieu_L/captstone/final_project_game/main_game_app/static/Stick.png new file mode 100644 index 00000000..746aa048 Binary files /dev/null and b/code/Hieu_L/captstone/final_project_game/main_game_app/static/Stick.png differ diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/base.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/base.html new file mode 100644 index 00000000..d5048b04 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/base.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + landing page + + + + + + {% block content %} + {% endblock %} + + + + + + \ No newline at end of file diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/fight_page.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/fight_page.html new file mode 100644 index 00000000..3f0bd389 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/fight_page.html @@ -0,0 +1,22 @@ +{% extends 'base.html' %} +{% block content %} +{% load static %} + +

FIGHT PAGE

+
+

enemy equipment:

+

{{ random_item_1.name }}, {{ random_item_2.name }}

+

enemy attack: {{ ai_attack }}

+

enemy defense: {{ ai_defense }}

+
+ +
+

user equipment area

+{% for item in data_model %} + {{ item.name }} +{% endfor %} +
+ + + +{% endblock %} diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/inventory.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/inventory.html new file mode 100644 index 00000000..36c0fd56 --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/inventory.html @@ -0,0 +1,37 @@ +{% extends 'base.html' %} +{% block content %} +{% load static %} + +

inventory page

+ +
+

backpack

+
+
+ {% for item in items %} +
+ +
+
+

{{ item.name }}

+

{{item.attack}}/{{item.defense}}

+ +
+
+
+ {% endfor %} +
+ +
+

equipped items

+ +
+ +
+ +
+ + +{% endblock %} \ No newline at end of file diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/landing.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/landing.html new file mode 100644 index 00000000..5c42abab --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/landing.html @@ -0,0 +1,9 @@ +{% extends 'base.html' %} +{% block content %} +
+

Welcome

+

battle enemies

+

collect gear

+

create an account now

+
+{% endblock %} \ No newline at end of file diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/login_page.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/login_page.html new file mode 100644 index 00000000..e69de29b diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/profile_page.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/profile_page.html new file mode 100644 index 00000000..e69de29b diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/templates/register_page.html b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/register_page.html new file mode 100644 index 00000000..2a6cba0d --- /dev/null +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/templates/register_page.html @@ -0,0 +1,9 @@ +{% extends 'base.html' %} +{% block content %} + +
+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} \ No newline at end of file diff --git a/code/Hieu_L/captstone/final_project_game/main_game_app/views.py b/code/Hieu_L/captstone/final_project_game/main_game_app/views.py index 91ea44a2..50d3c24e 100644 --- a/code/Hieu_L/captstone/final_project_game/main_game_app/views.py +++ b/code/Hieu_L/captstone/final_project_game/main_game_app/views.py @@ -1,3 +1,75 @@ -from django.shortcuts import render +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render, redirect +from django.template import loader +from .models import item +from django.views.generic import View +from django import forms +from django.contrib.auth.forms import UserCreationForm +import random +from django.views.decorators.csrf import csrf_exempt -# Create your views here. +# Create your views here + +def landing(request): + return render(request, 'landing.html') +class RegisterForm(UserCreationForm): + pass +def register(request): + form = RegisterForm() + return render(request, "register_page.html", {'form':form}) + +def login_page(request): + return render(request, "login_page.html") + +def profile(request): + return render(request, "profile_page.html") + + +def fight(request): + all_objects = item.objects.all() + random_item_1 = random.choice(all_objects) + random_item_2 = random.choice(all_objects) + ai_attack = random_item_1.attack + random_item_2.attack + ai_defense = random_item_1.defense + random_item_2.defense + context = { + "ai_attack": ai_attack, + "ai_defense": ai_defense, + "random_item_1": random_item_1, + "random_item_2": random_item_2, + } + return render(request, 'fight_page.html', context) + +class inventory(View): + def get(self, request): + items = item.objects.all + template = loader.get_template("inventory.html") + context = { + "items": items, + } + return HttpResponse(template.render(context, request)) + + def post(self, request): + items = item.objects.all + data = item.objects.all() + template = loader.get_template("inventory.html") + context = { + "items": items, + "data": data, + } + return HttpResponse(template.render(context, request)) + +@csrf_exempt +def move_data(request): + if request.method == 'POST': + data_models = request.POST.getlist('dataModels') + for id in data_models: + try: + data_model = item.objects.get(id=id) + context = { + "data_model" : data_model, + } + return redirect('fight_page', context) + except item.DoesNotExist: + return HttpResponse('Data model not found', status=404) + else: + return HttpResponse('Invalid request', status=405) \ No newline at end of file diff --git a/code/Hieu_L/javascript/todo_list/todo.html b/code/Hieu_L/javascript/todo_list/todo.html index 18d824d9..aaa54a15 100644 --- a/code/Hieu_L/javascript/todo_list/todo.html +++ b/code/Hieu_L/javascript/todo_list/todo.html @@ -12,8 +12,7 @@

todo list

need to complete

-