Dr. Félix Albertos Marco

Teacher & Researcher at Campus Universitari Igualada-UdL
Universitat de Lleida

2018

Working On The First Lego League Igualada 2019

On December 21, 2018

PIC

These days we are working on the First Lego League Igualada 2019. We are looking forward to see you at the event. More information at:

 http://www.firstlegoleague.udl.cat/ca/FLL-Lleida/la-fll-al-campus-igualada-udl/

 igualada.udl@firstlegoleague.es

Perfect Landing

On December 17, 2018

PIC

Projecte pràctic dut a terme en l’assignatura de Disseny i Creativitat en Entorns Interactius del grau universitari en Interacció Digital i Computació, realitzat al Campus Universitari d’Igualada, UDL.

El videojoc retro “Perfect Landing”, dissenyat i creat pels dos membres del treball (Óscar Cano i Oriol Figueras), té l’objectiu de reflexa els diferents principis universals de disseny de forma més clara i entenedora gràcies a la seva aplicació dins del propi joc.

Aquest consisteix en aterrar el coet tenint en compte diferents factors com són la vida, el fuel (gasolina) o les barreres que compliquen la dificultat del nivell.

Link Descarrega del Joc  https://play.google.com/store/apps/details?id=com.slothgames.perfectlanding

Students:

Óscar Cano – Grau en Tècniques d’Interacció Digital i de Computació

Oriol Figueras – Grau en Tècniques d’Interacció Digital i de Computació

PIC PIC PIC PIC PIC

Taller De Usabilidad

On December 5, 2018

PIC

Los alumnos del INS Moli de la Vila de Capellades han visitado el  Campus Universitario Igualada-UdL. Entre otras actividades, hemos realizado un taller sobre Usabilidad vinculado a los estudios que impartimos en el  Grado en Técnicas de Interacción Digital y Computación.

Presentation Of The HTML5 Tutorial At ICWE 2018

On June 5, 2018

PIC

Félix has presented the tutorial “Review of the HTML5 API” at the  18th International Conference on Web Engineering (ICWE 2018).

Snake Game Source Code

On May 8, 2018

PIC

By request, here is the source code for the Snake in C and assembler game that I have developed some time ago.

#include 
#include 
#include 
#include 
#include "..\perlib.h"

/* Cambio del juego de caracteres para mostrar figuritas XD  */
/* posibilidad de grabar y reproducir partidas */
typedef struct TCuerpo{
  struct TCuerpo* PSig; /* puntero a la siguiente posicin */
  char* mem; /* puntero a la memoria de video */
}*PCuerpo;
char prepara_video()
{
char* p=NULL;
char* nvi=NULL;
                                                                  

                                                                  
int i;
struct REGPACK rp;
FILE *f;
  nvi=(char*)malloc(256*16*sizeof(char));
  if(nvi==NULL)
    return 0;
  rp.r_ax=0x1130;
  rp.r_bx=0x0600;
  intr(0x10,&rp);
  p=(char*)MK_FP(rp.r_es,rp.r_bp);
  for(i=0;i<256*16;i++)
    *(nvi+i)=*(p+i);
  *(nvi+88*16)=255;
/* Patron caracter */
/* modifica objeto que se coge 'X' */
  cambia_car("obj1.txt",'X',nvi);
/* modifica pared '#' */
  cambia_car("obj2.txt",'#',nvi);
/* modifica cuerpo culebra '*' */
  cambia_car("obj3.txt",'*',nvi);
/* Fin patrn caracter */

asm push ax;
asm push bx;
asm push cx;
asm push dx;
asm push es;
asm push bp;
asm mov ax,1110h;
asm mov bx,1000h;
asm mov cx,0100h;
asm mov dx,0;
asm les bp,nvi;
asm int 10h;
asm pop bp;
asm pop es;
asm pop dx;
asm pop cx;
asm pop bx;
asm pop ax;

}

void encola(PCuerpo cabeza,char* p)
{
PCuerpo ncu=(PCuerpo) malloc(sizeof(struct TCuerpo));
                                                                  

                                                                  

  ncu->mem=p;
  ncu->PSig=NULL;

  if(cabeza->PSig==NULL)
  {

    cabeza->PSig=ncu;
  }
  else
  {
    ncu->PSig=cabeza->PSig;
    cabeza->PSig=ncu;
  }
}
PCuerpo desencola(PCuerpo cabeza)
{
PCuerpo aux,ant;
PCuerpo p;
aux=NULL;
p=NULL;
  if(cabeza->PSig!=NULL)
  {
    aux=cabeza->PSig;
    ant=NULL;
    while(aux->PSig!=NULL)
    {
      ant=aux;
      aux=aux->PSig;
    }
    p=aux;
    ant->PSig=NULL;
  }
  return p;
}

void pantalla()
{
  clrscr();
  caracter(35,23,'P',5,3);
  caracter(36,23,'u',5,3);
  caracter(37,23,'n',5,3);
  caracter(38,23,'t',5,3);
  caracter(39,23,'o',5,3);
  caracter(40,23,'s',5,3);
  cuadrado(0,0,79,22,'#',1,4);
                                                                  

                                                                  
}

void actualiza(PCuerpo snk,char* p,char x)
{
PCuerpo aux;
  if(x==0)
  {
    PCuerpo aux=desencola(snk);
    pintaaddr(aux->mem,'',0,0);/*borramos ltima direccion*/
    free(aux);
  }
  encola(snk,p);
  pintaaddr(p,'*',3,2);
}


void tachan(char modo,FILE *f)
{
int x;
int y;
  if(modo)
  {
    x=(getc(f)-'0')*10;
    x=x+(getc(f))-'0';
    y=(getc(f)-'0')*10;
    y=y+(getc(f))-'0';
  }
  else
  {
    do
    {
      x=random(78);
      y=random(21);
    }while(retcar(1+x,1+y)=='#'|retcar(1+x,1+y)=='*');
    if(x<10)
    {
      putc('0',f);
      putc('0'+x,f);
    }
    else
    {
      putc('0'+x/10,f);
      putc('0'+x%10,f);
    }
    if(y<10)
    {
                                                                  

                                                                  
      putc('0',f);
      putc('0'+y,f);
    }
    else
    {
      putc('0'+y/10,f);
      putc('0'+y%10,f);
    }

  }
  caracter(1+x,1+y,'X',1+random(5),1+random(5));
}

void veopun(int puntos)
{
  caracter(42,23,'0'+puntos/10,2,3);
  caracter(43,23,'0'+puntos%10,2,3);
}

int main(int argc,char* argv[])
{
  FILE *f;
  char modo;
  int crece=35;
  int puntos=0;
  int i;
  char c;
  int x=5;
  int y=5;
  char sx=1;
  char sy=0;
  PCuerpo cola=(PCuerpo) malloc(sizeof(struct TCuerpo));
  cola->PSig=NULL;
  cola->mem=NULL;
  pantalla();
  prepara_video();
  randomize();

  if(argc==2 && *argv[1]=='r')  /* reproducir jugada guardada */
  {
    f=fopen("partida.dat","r");
    modo=1;
    if(f==NULL)
    {
      printf("No se puede abrir:r-partida.dat\n");
      return 0;
                                                                  

                                                                  
    }
  }
  else
  {
    f=fopen("partida.dat","w");
    modo=0;
    if(f==NULL)
    {
      printf("Error abriendo:w->partida.dat\n");
      return 0;
    }
  }
  tachan(modo,f);
  do{
    c=' ';
    if(modo || kbhit()!=0)
    {
      if(modo)
        c=getc(f);
      else
        c=getch();
      switch(c)
      {
      case 'o':
        if (!sy) sy=-1;
        sx=0;
        break;
      case 'l':
        if (!sy) sy=+1;
        sx=0;
        break;
      case '':
        sy=0;
        if(!sx) sx=1;
        break;
      case 'k':
        sy=0;
        if(!sx) sx=-1;
        break;
      }
    }
    delay(75+(50*abs(sy))-(puntos*2));

    if(modo==0)
      putc(c,f);
    x=x+sx;
                                                                  

                                                                  
    y=y+sy;
    c=retcar(x,y);
    if(retcar(x,y)=='X')
    {
      crece=crece+12;
      tachan(modo,f);
      veopun(++puntos);
    }
    if (crece&&crece--)
      actualiza(cola,addrxy(x,y),1);
    else
      actualiza(cola,addrxy(x,y),0);
  }while (c!='#'&&c!='*');
return 0;
}

Comments are in spanish, if you need any information about it, please let me know.

Doom Like Game Developed In Javascript Using Native Web Technologies

On April 25, 2018

PIC

I have developed a Doom like game (pre-alpha) using my raycasting engine.

It uses native Web technologies (Javascript ES6 and HTML5 APIs)

Features: – Multiple maps – Sprite animation – Interaction with the Environment – Multiple weapons – Multiple NPC types – ….

HTML5 Tutorial At The ICWE 2018

On April 6, 2018 HTML5 tutorial ICWE 2018 PIC

Next June, I’ll be giving the tutorial “Review of the HTML5 API” at the 18th International Conference on Web Engineering (ICWE 2018).

HTML is the Web’s core language for creating content for everyone to use anywhere. It is the standard markup language used to create Web pages and its elements form the building blocks of all Web sites. The number of elements has increased over the years and the interaction is now much richer than at the beginning. It has evolved into HTML5, the latest version of the language. It has introduced new APIs to support synchronous communication, local information management and many other features that were neglected in previous HTML specifications. But, there are also some elements and APIs that have been changed or even removed. As a result, for any person interested on the Web, it is highly recommended to know the current status of the languages and technologies used to build nowadays (and future) Web applications. This tutorial presents and up to date view of the HTML5 standard, showing the evolution of the standard to the current version. The tutorial also includes running examples to present and discuss about the presented concepts

This tutorial is designed for researcher, students and developers with an interest on stay up to date on HTML technologies, especially on the latest APIs and components of the HTML5 language. Basic knowledge of JavaScript and HTML is desirable. The tutorial requires a plain text editor and a modern Web browser.

It has a duration of half-day, divided in three parts:

Firstly, a state of the art of the main features and characteristics of the HTML5 standard and its APIS is presented (e.g. Canvas, Service Workers, Web Workers, Web Sockets, …). Secondly, the tutorial is focused in presenting the latest changes within the HTML technology to show how the standard is evolving and how new elements and APIs has been introduced, changed or removed, showing the browse support. In the last part, some of the APIs and elements of the standard are presented in more detail, focusing on their use in case studies and the analysis of running examples. If you want to attend to this tutorial, please visit the ICWE 2018 Web page for more details and instructions on how to registrate for the event.

Informatics For All: The Strategy

On March 23, 2018

PIC

Informatics Europe and the ACM Europe Council have joined forces to develop, “Informatics for All: The Strategy“, a comprehensive and ambitious plan to establish Informatics as an essential discipline for students in Europe at all levels throughout the educational system. Learning Informatics will enable all students to understand, participate in, influence and contribute to the development of the digital world in general, and will provide a significantly improved opportunity for recruiting and educating the large number of IT specialists Europe needs to maintain and improve its position in the digital world economy.

This plan is guided by two key precepts:

Informatics must be introduced as a specialized and independent subject in school from the early years onwards. Informatics must also be integrated into the teaching of all school subjects. The paper asserts that teaching Informatics to all will require a fresh approach and outlines the vital need to develop fine-grained curricula that progressively build appropriate knowledge and skills; well-educated teachers at all levels; and additional research to understand exactly what to teach, how to teach it, and when to teach it.

Informatics for All: The Strategy

Report Autors:

Michael E. Caspersen It-vest – networking universities

Judith Gal-Ezer The Open University of Israel

Andrew McGettrick University of Strathclyde

Enrico Nardelli University of Roma “Tor Vergata”

In Game Test For Color Blindness

On March 6, 2018

PIC

See how important it is to design user interfaces ready to support color blindness. In the following video is shown how it is made in a videogame, The Division.

Spanish International Workshop On Smart Learning

On January 31, 2018

PIC

We have been at the “Spanish International Workshop on Smart Learning”, celebrated on the Computer Science Research Institute of Albacete (I3A) at the University of Castilla-La Mancha.

More information: “ Wearable Methodology

Raycasting In HTML5

On January 21, 2018

PIC

I’ve programmed a Raycasting Engine using just Javascript and HTML5 Canvas. If you want to know more about it, please let me know !

Thanks to  https://permadi.com/tutorial/raycast/rayc1.html