More
Construyendo un juego sostenible utilizando Flutter y Back4app
15 min
introducción en este tutorial, recorreremos cómo construir un juego sostenible utilizando flutter y back4app este juego educará a los usuarios sobre comportamientos ecológicos y los recompensará por tomar acciones positivas por el medio ambiente aprovecharemos back4app para servicios de backend, como el seguimiento del progreso de los usuarios y recompensarlos con artículos digitales concepto del juego ecowarrior el juego se llamará ecowarrior , donde los usuarios asumen pequeñas tareas ambientales como reciclar, ahorrar agua y reducir el consumo de energía los usuarios ganarán puntos y recompensas digitales a medida que completen tareas nos enfocaremos en registro de tareas y seguimiento del progreso los usuarios registran las acciones ecológicas que realizan sistema de recompensas los jugadores ganan puntos y medallas por sus contribuciones integración de backend todos los datos y el progreso del usuario se almacenarán en back4app requisitos previos configuración de desarrollo de flutter sigue la guía de instalación de flutter https //flutter dev/docs/get started/install cuenta de back4app regístrate para obtener una cuenta gratuita en back4app https //www back4app com/ conocimientos básicos de widgets de flutter y cómo trabajar con un backend paso 1 configurar back4app 1 1 crear un proyecto de back4app inicia sesión en back4app https //www back4app com/ y crea un nuevo proyecto de backend llamado ecowarriorgame crea una clase parse llamada ecoactions con los siguientes campos nombre de usuario (string) el nombre de usuario del jugador tipodeacción (string) el tipo de acción (por ejemplo, "reciclaje", "conservación de agua") puntos (número) los puntos otorgados por la acción marca de tiempo (datetime) el momento en que se registró la acción 1 2 configura tus credenciales de back4app ve a la configuración de tu proyecto de back4app y obtén tu id de aplicación y clave de cliente estos se utilizarán para inicializar back4app en flutter paso 2 configuración de tu proyecto flutter 2 1 crear un nuevo proyecto flutter flutter create eco warrior cd eco warrior 2 2 agregar dependencias abre pubspec yaml y agrega las siguientes dependencias para parse sdk y flutter dependencies flutter sdk flutter parse server sdk flutter latest version provider ^5 0 0 # state management ejecuta flutter pub get para instalar las dependencias 2 3 inicializar parse sdk en flutter en lib/main dart , inicializa parse agregando tus credenciales de back4app import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( title 'ecowarrior game', theme themedata(primaryswatch colors green), home gamescreen(), ); } } reemplaza your back4app app id y your back4app client key con tus credenciales reales de back4app paso 3 interfaz y funcionalidad del juego ahora construiremos la interfaz del ecowarrior juego e integraremos con back4app 3 1 crear la pantalla del juego en lib/game screen dart , crea una interfaz básica del juego donde los jugadores puedan registrar tareas ambientales y ver su puntuación import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; class gamescreen extends statefulwidget { @override gamescreenstate createstate() => gamescreenstate(); } class gamescreenstate extends state\<gamescreen> { string? selectedaction; int score = 0; final list\<string> actions = \['recycling', 'water conservation', 'energy saving']; future\<void> logaction() async { if ( selectedaction == null) { scaffoldmessenger of(context) showsnackbar(snackbar( content text('please select an action '), )); return; } // assign points for the action int points = 0; switch ( selectedaction) { case 'recycling' points = 10; break; case 'water conservation' points = 15; break; case 'energy saving' points = 20; break; } // save action to back4app final ecoaction = parseobject('ecoactions') set('username', 'player1') // example username set('actiontype', selectedaction) set('points', points) set('timestamp', datetime now()); final response = await ecoaction save(); if (response success) { setstate(() { score += points; }); scaffoldmessenger of(context) showsnackbar(snackbar( content text('action logged! you earned $points points '), )); } else { scaffoldmessenger of(context) showsnackbar(snackbar( content text('failed to log action '), )); } } @override widget build(buildcontext context) { return scaffold( appbar appbar( title text('ecowarrior'), ), body padding( padding const edgeinsets all(16 0), child column( crossaxisalignment crossaxisalignment stretch, children \[ text( 'select an eco friendly action ', style textstyle(fontsize 18), ), dropdownbutton\<string>( value selectedaction, hint text('choose action'), items actions map((string action) { return dropdownmenuitem\<string>( value action, child text(action), ); }) tolist(), onchanged (string? newvalue) { setstate(() { selectedaction = newvalue; }); }, ), sizedbox(height 20), elevatedbutton( onpressed logaction, child text('log action'), ), sizedbox(height 20), text( 'current score $ score', style textstyle(fontsize 20, fontweight fontweight bold), ), ], ), ), ); } } paso 4 recuperando datos de usuario de back4app recuperaremos y mostraremos la puntuación total y las acciones que el usuario ha registrado 4 1 obtener la puntuación del jugador desde el backend para obtener la puntuación del jugador, necesitamos recuperar todas sus acciones de back4app y calcular la puntuación total en lib/game screen dart , actualiza gamescreenstate para incluir la lógica de recuperación future\<void> fetchscore() async { final query = querybuilder\<parseobject>(parseobject('ecoactions')) whereequalto('username', 'player1'); // example username final response = await query query(); if (response success && response results != null) { int totalscore = 0; for (var result in response results!) { totalscore += result get\<int>('points')!; } setstate(() { score = totalscore; }); } } llama a fetchscore() cuando se inicialice la pantalla @override void initstate() { super initstate(); fetchscore(); } paso 5 ejecutando el juego ejecuta la aplicación en tu dispositivo o emulador el jugador seleccionará una acción del menú desplegable, la registrará y sus puntos se guardarán en back4app la puntuación total se obtendrá de back4app y se mostrará en la pantalla paso 6 ampliando el juego puedes ampliar el ecowarrior juego al agregar más tareas y acciones ambientales implementar una tabla de clasificación para mostrar a los mejores jugadores ecológicos agregar logros por completar un cierto número de tareas conclusión en este tutorial, construimos un juego sostenible utilizando flutter y back4app el juego permite a los jugadores registrar acciones ecológicas, rastrear su progreso utilizando un backend y recompensarlos con puntos con el rico marco de ui de flutter y el backend escalable de back4app, puedes ampliar fácilmente este concepto para construir juegos sostenibles más complejos e interactivos para más información documentación de flutter https //flutter dev/docs documentación de back4app https //www back4app com/docs