人机互动版猜拳游戏(采用OOP面向对象思想,运用Spring IoC方式实现

请根据传统方式,改造为IoC方式实现。

传统方式:
项目共包括4个类:Computer类、User类、Game类和PlayGame类。

public class Computer {
	public String name;
	public int score;
	public void chuquan(int i){
		switch(i){
		case 1:System.out.println("电脑出拳:剪刀");break;
		case 2:System.out.println("电脑出拳:石头");break;
		case 3:System.out.println("电脑出拳:布");break;
		}
	}
}

public class User {
	public String name;
	public int score;
	public void chuquan(int i){
		switch(i){
		case 1:System.out.println("你出拳:剪刀");break;
		case 2:System.out.println("你出拳:石头");break;
		case 3:System.out.println("你出拳:布");break;
		default:System.out.println("输入错误!此次输入无效!");break;
		}
	}
}

public class Game{
	User u=new User();
	Computer c=new Computer();
	public int times;
	
	//游戏初始化
	public void init(){
		u.name="匿名";
		u.score=0;
		c.name="匿名";
		u.score=0;
		times=0;
	}
	*public void computerPlayer(int input){
		switch(input){
		case 1:c.name="刘备";break;
		case 2:c.name="孙权";break;
		case 3:c.name="曹操";break;
		}
	}
	public void user(String name){
		u.name=name;
	}
	public void chuquan(int a){
		if(a==1||a==2||a==3){
			times+=1;
			u.chuquan(a);
			int b=(int)(Math.random()*3)+1;//产生一个1~3的随机数
			c.chuquan(b);
			if(a==1&&b==3||a==2&&b==1||a==3&&b==2){//若用户赢,分数+1
				u.score+=1;
			}else if(a==3&&b==1||a==1&&b==2||a==2&&b==1){//若电脑赢,分数+1
				c.score+=1;
			}
			}else{
				System.out.println("输入有误,请输入一个0~3的整数!");
			}
		
	}
	
	public void jisuan(){
		System.out.println("一共玩了:"+times+" 次! "+u.name+" 赢了:"+u.score+"次! "+c.name+" 赢了:"+c.score+"次!");
	}
	public void result(){
		System.out.println("最后结果为:\n一共玩了:"+times+" 次! "+u.name+" 赢了:"+u.score+"次! "+c.name+" 赢了:"+c.score+"次!");
	}
}

/***
 * 
 * @本程序是一个人机互动猜拳小游戏
 */
 
import java.util.InputMismatchException;
import java.util.Scanner;
public class PlayGame {
	public static void main(String[] args){
		int juese;
		int i;//i表示玩家出拳的数字
		Game g=new Game();
		g.init();
		System.out.print("************************************\n");
		System.out.print("**         欢迎进入猜拳游戏                 ***\n");
		System.out.print("************************************\n");
		System.out.println("出拳规则:1.剪刀  2.石头  3.布\n");
		System.out.println("请选择角色:1.刘备  2.孙权  3.曹操");
		Scanner input=new Scanner(System.in);
		try{
		juese=input.nextInt();
		while(juese!=1&&juese!=2&&juese!=3){//输入内容必须是一个1~3的整数,否则重新输入
			System.out.println("输入的内容应该是一个1~3的整数,请重新输入!");
			juese=input.nextInt();
		}
		g.computerPlayer(juese);
		System.out.println("请输入您的姓名:");
		g.user(input.next());
		System.out.println("出拳:(输入0退出)");
		i=input.nextInt();
		while(i!=0){//若用户不输入0,执行循环体,一直玩游戏
			g.chuquan(i);
			g.jisuan();
			System.out.println("\n出拳:(输入0退出)");
			i=input.nextInt();
		}
		System.out.println("游戏结束!");
		g.result();
		}catch(InputMismatchException e){
			System.out.println("程序运行出错:输入非法字符!");
		}finally{
			System.out.println("\n谢谢使用!");
		}
		input.close();
	}
}

Spring

人机互动版猜拳游戏(采用OOP面向对象思想,运用Spring IoC方式实现_第1张图片

pojo:

//User
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    public String name;
    public int score;

    public void chuquan(int i){
        switch(i){
            case 1:System.out.println("你出拳:剪刀");break;
            case 2:System.out.println("你出拳:石头");break;
            case 3:System.out.println("你出拳:布");break;
            default:System.out.println("输入错误!此次输入无效!");break;
        }
    }
}

//Computer
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Computer implements Serializable {
    public String name;
    public int score;

    public void chuquan(int i){
        switch(i){
            case 1:System.out.println("电脑出拳:剪刀");break;
            case 2:System.out.println("电脑出拳:石头");break;
            case 3:System.out.println("电脑出拳:布");break;
        }
    }
}

 service:

//接口
package com.zd.service;

public interface GeamService {

    void computerPlayer(int input);

    void user(String name);

    void chuquan(int a);

    void jisuan();

    void result();

}

//接口实现类
package com.zd.service.Impl;

import com.zd.dao.GeamDao;
import com.zd.pojo.Computer;
import com.zd.pojo.User;
import com.zd.service.GeamService;

public class GeamServiceImpl implements GeamService {

    private User u=null;
    private Computer c=null;
    private int times;

    private GeamDao geamDao =null;

    public void setGeamDao(GeamDao geamDao) {
        this.geamDao = geamDao;
    }

    public void setU(User u) {
        this.u = u;
    }

    public void setC(Computer c) {
        this.c = c;
    }

    public void setTimes(int times) {
        this.times = times;
    }

    @Override
    public void computerPlayer(int input) {

        c.name=geamDao.computerquery(input).name;
    }

    @Override
    public void user(String name) {
         u.name=name;
    }

    @Override
    public void chuquan(int a) {
        if(a==1||a==2||a==3){
            times+=1;
            u.chuquan(a);
            int b=(int)(Math.random()*3)+1;//产生一个1~3的随机数
            c.chuquan(b);
            if(a==1&&b==3||a==2&&b==1||a==3&&b==2){//若用户赢,分数+1
                u.score+=1;
            }else if(a==3&&b==1||a==1&&b==2||a==2&&b==1){//若电脑赢,分数+1
                c.score+=1;
            }
        }else{
            System.out.println("输入有误,请输入一个0~3的整数!");
        }
    }

    @Override
    public void jisuan() {
        System.out.println("一共玩了:"+times+" 次! "+u.name+" 赢了:"+u.score+"次! "+c.name+" 赢了:"+c.score+"次!");
    }

    @Override
    public void result() {
        System.out.println("最后结果为:\n一共玩了:"+times+" 次! "+u.name+" 赢了:"+u.score+"次! "+c.name+" 赢了:"+c.score+"次!");
    }
}


dao:

//接口
package com.zd.dao;

import com.zd.pojo.Computer;

public interface GeamDao {
    Computer computerquery(int i);
}


//接口实现类
package com.zd.dao.Impl;

import com.zd.dao.GeamDao;
import com.zd.pojo.Computer;

import java.util.List;

public class GeamDaoImpl implements GeamDao {

    private List computerList;

    public void setComputerList(List computerList) {
        this.computerList = computerList;
    }

    @Override
    public Computer computerquery(int i) {

        return computerList.get(i-1);
    }
}

Spring配置文件 




    
        
        
    
    
        
        
    
    
        
        
    

    
        
            
                
                
                
            
        
    


    
        
        
    
    
        
        
    


    
        
        
        
        
    

测试类

package com.zd;

import com.zd.service.GeamService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.InputMismatchException;
import java.util.Scanner;

public class PlayGame {


    public static void main(String[] args) {
        ApplicationContext ac =new ClassPathXmlApplicationContext("ApplicationContext.xml");

        GeamService service = (GeamService) ac.getBean("geamService");

        int juese;
        int i;//i表示玩家出拳的数字
        System.out.print("************************************\n");
        System.out.print("**         欢迎进入猜拳游戏                 ***\n");
        System.out.print("************************************\n");
        System.out.println("出拳规则:1.剪刀  2.石头  3.布\n");
        System.out.println("请选择角色:1.刘备  2.孙权  3.曹操");
        Scanner input=new Scanner(System.in);

        try{
            juese=input.nextInt();
            while(juese!=1&&juese!=2&&juese!=3){//输入内容必须是一个1~3的整数,否则重新输入
                System.out.println("输入的内容应该是一个1~3的整数,请重新输入!");
                juese=input.nextInt();
            }
            service.computerPlayer(juese);
            System.out.println("请输入您的姓名:");
            service.user(input.next());
            System.out.println("出拳:(输入0退出)");
            i=input.nextInt();
            while(i!=0){//若用户不输入0,执行循环体,一直玩游戏
                service.chuquan(i);
                service.jisuan();
                System.out.println("\n出拳:(输入0退出)");
                i=input.nextInt();
            }
            System.out.println("游戏结束!");
            service.result();
        }catch(InputMismatchException e){
            System.out.println("程序运行出错:输入非法字符!");
        }finally{
            System.out.println("\n谢谢使用!");
        }
        input.close();

    }
}

你可能感兴趣的:(SSM,spring,java-ee,java,intellij-idea)