/*
 *  Roulette.java
 *  Copyright (C) 2002  Frank Buß (fb@frank-buss.de)
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You can get the GNU General Public License at
 *  http://www.gnu.org/licenses/gpl.html
 */

import java.awt.*;
import java.applet.*;

public class Roulette extends Applet
{
	private boolean red[] = {false,true,false,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,true,true,false,true,false,true,false,true,false,true,false,false,true,false,true,false,true,false,true};

	private Label lastNumber;
	private NumberField moneyNumberField;
	private NumberField numberNumberField;
	private NumberField numberStakeNumberField;
	private NumberField evenStakeNumberField;
	private NumberField oddStakeNumberField;
	private NumberField redStakeNumberField;
	private NumberField blackStakeNumberField;
	private Button playButton;
	
	private int nullCount;
	
	/**
	 * GUI aufbauen.
	 */
	public void init()
	{
		setLayout(new BorderLayout());
		setBackground(Color.white);

		Panel inputContainer = new Panel();
		inputContainer.setLayout(new BorderLayout());
		Panel input = new Panel();
		input.setLayout(new GridLayout(0, 2));
		
		input.add(new Label("Letzte Zahl:"));
		lastNumber = new Label();
		input.add(lastNumber);
		
		input.add(new Label("Geld:"));
		moneyNumberField = new NumberField(1000);
		input.add(moneyNumberField);
		
		input.add(new Label("Zahl:"));
		numberNumberField = new NumberField(0);
		input.add(numberNumberField);
		
		input.add(new Label("Einsatz für diese Zahl:"));
		numberStakeNumberField = new NumberField(0);
		input.add(numberStakeNumberField);
		
		input.add(new Label("Einsatz gerade:"));
		evenStakeNumberField = new NumberField(0);
		input.add(evenStakeNumberField);
		
		input.add(new Label("Einsatz ungerade:"));
		oddStakeNumberField = new NumberField(0);
		input.add(oddStakeNumberField);
		
		input.add(new Label("Einsatz rot:"));
		redStakeNumberField = new NumberField(0);
		input.add(redStakeNumberField);
		
		input.add(new Label("Einsatz schwarz:"));
		blackStakeNumberField = new NumberField(0);
		input.add(blackStakeNumberField);
		
		playButton = new Button("Spielen");
		input.add(playButton);
		
		inputContainer.add(BorderLayout.NORTH, input);
		add(BorderLayout.WEST, inputContainer);

		Panel p = new Panel();
		add(BorderLayout.CENTER, p);
		
		Label title = new Label("Roulette, Copyright 2002 by Frank Buß", Label.CENTER);
		title.setFont(new Font("SansSerif", Font.PLAIN, 20));
		add(BorderLayout.NORTH, title);
	}
	
	private void play()
	{
		NumberField.texts2numbers();
		int result = (int) (Math.random() * 37);
		int money = moneyNumberField.getNumber();
		int number = numberNumberField.getNumber();
		int numberStake = numberStakeNumberField.getNumber();
		int evenStake = evenStakeNumberField.getNumber();
		int oddStake = oddStakeNumberField.getNumber();
		int redStake = redStakeNumberField.getNumber();
		int blackStake = blackStakeNumberField.getNumber();

		money -= numberStake + evenStake + oddStake + redStake + blackStake;
		if (result == 0) {
			lastNumber.setText("0");
		} else {
			if (result == number) money += 36 * numberStake;
			if ((result % 2) == 0) money += 2 * evenStake; else money += 2 * oddStake;
			if (red[result]) {
				money += 2 * redStake;
				lastNumber.setText(result + " rot");
			} else {
				money += 2 * blackStake;
				lastNumber.setText(result + " schwarz");
			}
		}
		moneyNumberField.setNumber(money);
		NumberField.numbers2texts();
	}
	
        /**
         * Kugel rollen lassen.
         */
	public boolean action(Event evt, Object what)
	{
		if (evt.target == playButton) play();
		return true;
	}
}

