찾다
Javajava지도 시간JAVA 컬렉션 컬렉션의 포커 게임 예

컬렉션 계층 구조의 루트 인터페이스입니다. 컬렉션은 컬렉션의 요소라고도 하는 개체 집합을 나타냅니다. 일부 컬렉션은 중복 요소를 허용하지만 다른 컬렉션은 그렇지 않습니다. 일부 컬렉션은 순서가 지정되어 있고 다른 컬렉션은 순서가 지정되어 있지 않습니다. JDK는 이 인터페이스의 직접적인 구현을 제공하지 않습니다. 즉, Set 및 List와 같은 보다 구체적인 하위 인터페이스의 구현을 제공합니다. 이 인터페이스는 일반적으로 최대 일반성이 필요한 곳에서 컬렉션을 전달하고 작업하는 데 사용됩니다.

주요 콘텐츠: 컬렉션은 홍콩 영화 속 거물들이 플레이하는 포커 게임을 시뮬레이션하는 데 사용됩니다.

1. 게임 규칙: 두 명의 플레이어가 각각 두 장의 카드를 받고 비교합니다. 각 플레이어의 손에 있는 가장 많은 카드 수를 비교하고 크기는 A-2이며 점수가 더 높은 플레이어가 승리합니다. 점수가 동일할 경우 양복을 비교하여 양복은 검정(4), 빨강(3), 자두(2), 사각형(1) 순으로 되며, 양복이 더 큰 쪽이 승리합니다.

2. 구현 단계:

검은색(4), 빨간색(3), 자두색(2), 사각형(1)의 4가지 모양으로 구성된 A-2 카드 덱을 만듭니다. , 총 52장의 플레이 카드
플레이어 ID, 이름, 카드 정보를 포함한 두 명의 플레이어를 생성합니다.
카드를 섞고 두 플레이어에게 각각 두 장의 카드를 줍니다.
카드 크기를 비교합니다. 플레이어의 손에 승자가 결정됩니다 ;

3. 프로그램 구현

카드 클래스: 카드의 번호와 모양이 포함됩니다

package collectiontest.games;
public class Card {
  private Integer id; //牌的大小
  private Integer type;//牌的花色
   
  public Card(Integer id, Integer type) {
    this.id = id;
    this.type = type;
  }
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public Integer getType() {
    return type;
  }
  public void setType(Integer type) {
    this.type = type;
  }
  @Override
  public String toString() {
    return "Card [id=" + id + ", type=" + type + "]";
  }  
}

포커 클래스: 플레잉 카드 카드 A-2

package collectiontest.games;
public class Poker {
  private Card id2 ;
  private Card id3 ;
  private Card id4 ;
  private Card id5 ;
  private Card id6 ;
  private Card id7 ;
  private Card id8 ;
  private Card id9 ;
  private Card id10 ;
  private Card J ;
  private Card Q ;
  private Card K ;
  private Card A ;
   
  public Poker() {
  }    
  //四个类型:黑--4、红--3、梅--2、方--1
  public Poker(Integer type) {
    this.id2 = new Card(2, type);
    this.id3 = new Card(3, type);
    this.id4 = new Card(4, type);
    this.id5 = new Card(5, type);
    this.id6 = new Card(6, type);
    this.id7 = new Card(7, type);
    this.id8 = new Card(8, type);
    this.id9 = new Card(9, type);
    this.id10 = new Card(10, type);
    this.J = new Card(11, type);
    this.Q = new Card(12, type);
    this.K = new Card(13, type);
    this.A = new Card(14, type);
  }
  public Card getId2() {
    return id2;
  }
  public void setId2(Card id2) {
    this.id2 = id2;
  }
  public Card getId3() {
    return id3;
  }
  public void setId3(Card id3) {
    this.id3 = id3;
  }
  public Card getId4() {
    return id4;
  }
  public void setId4(Card id4) {
    this.id4 = id4;
  }
  public Card getId5() {
    return id5;
  }
  public void setId5(Card id5) {
    this.id5 = id5;
  }
  public Card getId6() {
    return id6;
  }
  public void setId6(Card id6) {
    this.id6 = id6;
  }
  public Card getId7() {
    return id7;
  }
  public void setId7(Card id7) {
    this.id7 = id7;
  }
  public Card getId8() {
    return id8;
  }
  public void setId8(Card id8) {
    this.id8 = id8;
  }
 
  public Card getId9() {
    return id9;
  }
  public void setId9(Card id9) {
    this.id9 = id9;
  }
  public Card getId10() {
    return id10;
  }
  public void setId10(Card id10) {
    this.id10 = id10;
  }
  public Card getJ() {
    return J;
  }
  public void setJ(Card j) {
    J = j;
  }
  public Card getQ() {
    return Q;
  }
  public void setQ(Card q) {
    Q = q;
  }
  public Card getK() {
    return K;
  }
  public void setK(Card k) {
    K = k;
  }
  public Card getA() {
    return A;
  }
  public void setA(Card a) {
    A = a;
  }
}

를 포함합니다. 플레이어 플레이어 클래스: 플레이어 ID와 이름, 보유한 카드 정보를 포함합니다.

package collectiontest.games;
import java.util.ArrayList;
import java.util.List;
 
public class Player {
  //玩家的ID
  private String id ;
  //玩家姓名
  private String name ;
  //玩家所持牌
  private List<Card> pokerType ;
   
  public Player() {  
  }
  public Player(String id, String name, List<Card> pokerType) {
    this.id = id;
    this.name = name;
    this.pokerType = new ArrayList<>();
  }
 
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public List<Card> getPokerType() {
    return pokerType;
  }
  public void setPokerType(List<Card> pokerType) {
    this.pokerType = pokerType;
  }  
}

포커 게임 메인 클래스: 1) 포커 생성 2) 플레이어 생성 3) 포함 섞기 4) 딜링 5) 결과 비교

package collectiontest.games;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
 
public class GamsBegin {
 
  // 创建扑克牌
  public Set<Poker> cPoker() {
     
    System.out.println("**********开始创建扑克牌**********");
    // 创建一副poker
    // 四个类型:黑--4、红--3、梅--2、方--1
    Set<Poker> pokers = new HashSet<>();
    Poker[] poker = { new Poker(1), new Poker(2), new Poker(3),
        new Poker(4) };
    /*
     * Collections工具类的使用
     * Collections.addAll(pokers, new Poker(1), new Poker(2), new Poker(3),new Poker(4));
     *
     * */
    pokers.addAll(Arrays.asList(poker));
 
    System.out.println("**********扑克牌创建成功**********");
 
    return pokers;
  }
 
  // 创建两个玩家
  public Map<String, Player> cPlayer() {
     
    System.out.println("**********开始创建玩家**********");
    Map<String, Player> map = new HashMap<String, Player>();
    // 控制数量
    Integer control = 0;
 
    System.out.println("创建两名玩家,根据提示创建");
    Scanner console = new Scanner(System.in);
    while (true) {
      System.out.println("请输入第 "+(control+1)+" 个玩家ID:");
      String courseId = console.next();
 
      if (isNumeric(courseId)) {
        System.out.println("请输入第 "+(control+1)+" 个玩家姓名:");
        String courseName = console.next();
 
        Player players = new Player(courseId, courseName, null);
        //保存数据
        map.put(courseId, players);
 
        System.out.println("添加第 " + (control + 1) + " 个玩家 " + courseName
            + " 成功");
        //数量自加
        control++;
      } else {
        System.out.println("*****请输入数字ID*****");
        continue;
      }
 
      if (control == 2) {
        break;
      }
 
    }
 
    System.out.println("**********玩家创建成功**********");
 
    return map;
  }
 
  // 判断输入是否为数字, Character.isDigit()为java方法
  public boolean isNumeric(String str) {
    for (int i = 0; i < str.length(); i++) {
      if (!Character.isDigit(str.charAt(i))) {
        return false;
      }
    }
    return true;
  }
 
  /**
   * 洗牌 :也可以产生52个不同随机数,实现洗牌
   *
   **/
  public List<Card> wPoker(Set<Poker> pokers) {
    System.out.println("**********开始洗牌**********");
    //利用List的有序排序,洗牌之后保存顺序不变
    List<Card> listCard = new ArrayList<>();
    // 利用Set集合的无序排序,实现洗牌
    Set<Card> listSet = new HashSet<>();
 
    //保存到Set集合,无序
    for (Poker pk : pokers) {
      listSet.add(pk.getId2());
      listSet.add(pk.getId3());
      listSet.add(pk.getId4());
      listSet.add(pk.getId5());
      listSet.add(pk.getId6());
      listSet.add(pk.getId7());
      listSet.add(pk.getId8());
      listSet.add(pk.getId9());
      listSet.add(pk.getId10());
      listSet.add(pk.getJ());
      listSet.add(pk.getQ());
      listSet.add(pk.getK());
      listSet.add(pk.getA());
    }
 
    //保存在List集合,有序
    for (Card cd : listSet) {
      listCard.add(cd);
      System.out.println(cd);
    }
     
    System.out.println("**********洗牌成功**********");
 
    return listCard;
  }
 
  // 发牌
  public Map<String, Player> pushPoker(List<Card> listCard,
      Map<String, Player> pMap) {
    System.out.println("**********发牌开始**********");
     
    // 控制每人发两张牌后结束
    int control = 0;
 
    for (Map.Entry<String, Player> entry : pMap.entrySet()) {
 
      if (control == 0) {
        for (int i = 0; i < 3; i = i + 2) {
          // 发牌
          entry.getValue().getPokerType().add(listCard.get(i));
        }
        // 更新map对象
        pMap.put(entry.getKey(), entry.getValue());
        control++;
      } else if (control == 1) {
        for (int i = 1; i < 4; i = i + 2) {
          // 发牌
          entry.getValue().getPokerType().add(listCard.get(i));
        }
        // 更新map对象
        pMap.put(entry.getKey(), entry.getValue());
        control++;
      } else {
        break;
      }
    }
 
    System.out.println("**********发牌成功**********");
 
    return pMap;
  }
 
 
  public void compareMatch(Map<String, Player> newMap) {
   
    /*比较胜负
     * 1.首先取得每个玩家手中最大牌的ID和花色ID。
     * 2.比较俩玩家手中最大牌的ID大小,牌大者获胜。
     * 3.如果两张牌的ID相等,在比较两张牌的花色ID,花色ID更大着获胜。
     * 
     * */
     
    List<Player> players = new ArrayList<>();
 
    // 获得两个玩家
    for (Map.Entry<String, Player> entry : newMap.entrySet()) {
      players.add(entry.getValue());
    }
 
    // 玩家一信息和所持牌
    List<Card> playerOne = players.get(0).getPokerType();
    //获得最大牌的ID和花色
    Integer oneMaxId = Math.max(playerOne.get(0).getId(), playerOne.get(1)
        .getId());
    Integer oneMaxType = (oneMaxId!=playerOne.get(0).getId()) ? playerOne.get(1).getType() : playerOne.get(0).getType() ;
 
    // 玩家二信息和所持牌
    List<Card> playerTwo = players.get(1).getPokerType();
    //获得最大牌的ID和花色
    Integer twoMaxId = Math.max(playerTwo.get(0).getId(), playerTwo.get(1)
        .getId());
    Integer twoMaxType = (twoMaxId!=playerTwo.get(0).getId()) ? playerTwo.get(1).getType() : playerTwo.get(0).getType() ;
 
    if (oneMaxId > twoMaxId) {
      System.out.println("玩家 : " + players.get(0).getName() + " 获胜!!");
    } else if (oneMaxId == twoMaxId) {
 
      if (oneMaxType > twoMaxType) {
        System.out
            .println("玩家 : " + players.get(0).getName() + " 获胜!!");
 
      } else {
        System.out
            .println("玩家 : " + players.get(1).getName() + " 获胜!!");
      }
 
    } else {
      System.out.println("玩家 : " + players.get(1).getName() + " 获胜!!");
    }
 
    System.out.println("**********************************************");
    System.out.println("玩家 : " + players.get(0).getName() + "的牌是:"
        + showName(playerOne.get(0).getType(), 0) + "--"
        + showName(playerOne.get(0).getId(), 1) + "  "
        + showName(playerOne.get(1).getType(), 0) + "--"
        + showName(playerOne.get(1).getId(), 1));
    System.out.println("玩家 : " + players.get(1).getName() + "的牌是:"
        + showName(playerTwo.get(0).getType(), 0) + "--"
        + showName(playerTwo.get(0).getId(), 1) + "  "
        + showName(playerTwo.get(1).getType(), 0) + "--"
        + showName(playerTwo.get(1).getId(), 1));
  }
 
  // 显示牌的名称
  private String showName(Integer i, Integer type) {
    String str = "";
 
    // 显示花色
    if (type == 0) {
      switch (i) {
      case 1: {
        str = "方块";
        break;
      }
      case 2: {
        str = "梅花";
        break;
      }
      case 3: {
        str = "红桃";
        break;
      }
      case 4: {
        str = "黑桃";
        break;
      }
 
      default: {
        break;
      }
      }
 
    }
 
    // 显示数字
    if (type == 1) {
      if (i < 11) {
        return i.toString();
      } else {
        switch (i) {
        case 11: {
          str = "J";
          break;
        }
        case 12: {
          str = "Q";
          break;
        }
        case 13: {
          str = "K";
          break;
        }
        case 14: {
          str = "A";
          break;
        }
 
        default: {
          break;
        }
        }
      }
    }
 
    return str;
  }
 
  public static void main(String[] args) {
    GamsBegin gb = new GamsBegin();
     
    // 1、创建扑克牌
    Set<Poker> pokers = gb.cPoker();
 
    // 2、创建两个玩家
    Map<String, Player> pMap = gb.cPlayer();
 
    // 3、洗牌
    List<Card> listCard = gb.wPoker(pokers);
 
    // 4、发牌
    Map<String, Player> newMap = gb.pushPoker(listCard, pMap);
 
    // 4、比较胜负
    gb.compareMatch(newMap);
 
  }
}

실행 결과:

************카드 만들기 시작***** ****
************포커 카드가 성공적으로 생성되었습니다************
************만들기 시작 player********* *
두 명의 플레이어를 생성하고 프롬프트를 따릅니다
첫 번째 플레이어 ID를 입력하세요:
첫 번째 플레이어 이름을 입력하세요:
Stephen Chow
추가 첫 번째 주윤발 추가 성공
두 번째 주윤발 ID를 입력하세요:
두 번째 주윤발 이름을 입력하세요:
주윤발
주윤발 두 번째 주윤발 추가 성공
** ********** 플레이어가 성공적으로 생성되었습니다 **********
************카드 섞기 시작************ **
카드 [id=9, 유형=3]
카드 [id=11, 유형=4]
카드 [id=13, 유형=3]
카드 [id=8, type=3]
카드 [id=5, type=2 ]
카드 [id=6, type=1]
카드 [id=4, type=3]
카드 [id= 5, 유형=4]
카드 [id=2, 유형=3]
카드 [id=9, 유형=2]
카드 [id=9, 유형=4]
카드 [ id=14, type=2]
카드 [id=9 , type=1]
카드 [id=2, type=1]
카드 [id=2, type=4]
카드 [id=7, 유형=4]
카드 [id =11, 유형=1]
카드 [id=10, 유형=1]
카드 [id=14, 유형=4]
카드 [id=14, 유형=3]
카드 [id=12, 유형=2]
카드 [id=2, 유형=2]
카드 [id=10, 유형=2 ]
카드 [id=7, 유형=1]
카드 [id=7, 유형=3]
카드 [id=8, 유형=2]
카드 [id=4, 유형 =4]
카드 [id=13, 유형=4]
카드 [id=14, 유형=1]
카드 [id=12, 유형=1]
카드 [id=5 , 유형=1]
카드 [id=6, 유형= 4]
카드 [id=12, 유형=4]
카드 [id=11, 유형=2]
카드 [id =10, 유형=3]
카드 [id=3, 유형=4]
카드 [id=12, 유형=3]
카드 [id=4, 유형=2]
카드 [id=4, type=1]
카드 [id= 6, type=2]
카드 [id=5, type=3]
카드 [id=8, type=4]
카드 [id=3, 유형=2]
카드 [ id=13, 유형=2]
카드 [id=7, 유형=2]
카드 [id=3, 유형=3]
카드 [id=3, 유형=1]
카드 [id=6, 유형=3]
카드 [id=8, 유형=1]
카드 [id=11, 유형= 3]
카드 [id=13, 유형=1]
카드 [id=10, 유형=4]
************섞기 성공***** *****
************ *거래 시작**********
************거래 성공**** ********
플레이어: Stephen Chow가 승리합니다! !
************************************************************************ *
플레이어: 주성치의 카드: 하츠-9 하트-K
플레이어: 주윤발의 카드: 스페이드-J 하트-8

위 내용은 기사 전문 내용, I 이것이 모든 사람의 학습에 도움이 되기를 바라며, 또한 모든 사람이 PHP 중국어 웹사이트를 지지해주기를 바랍니다.

JAVA 컬렉션 포커 게임 예제와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
플랫폼 독립성은 기업 수준의 Java 응용 프로그램에 어떻게 도움이됩니까?플랫폼 독립성은 기업 수준의 Java 응용 프로그램에 어떻게 도움이됩니까?May 03, 2025 am 12:23 AM

Java는 플랫폼 독립성으로 인해 엔터프라이즈 수준의 응용 프로그램에서 널리 사용됩니다. 1) 플랫폼 독립성은 JVM (Java Virtual Machine)을 통해 구현되므로 JAVA를 지원하는 모든 플랫폼에서 코드가 실행될 수 있습니다. 2) 크로스 플랫폼 배포 및 개발 프로세스를 단순화하여 유연성과 확장 성을 더 많이 제공합니다. 3) 그러나 성능 차이 및 타사 라이브러리 호환성에주의를 기울이고 순수한 Java 코드 사용 및 크로스 플랫폼 테스트와 같은 모범 사례를 채택해야합니다.

Java는 플랫폼 독립성을 고려하여 IoT (Internet of Things) 장치의 개발에서 어떤 역할을합니까?Java는 플랫폼 독립성을 고려하여 IoT (Internet of Things) 장치의 개발에서 어떤 역할을합니까?May 03, 2025 am 12:22 AM

javaplaysaSignificantroleiniotduetoitsplatformincentence.1) itallowscodetobewrittenonceandevices.2) java'secosystemprovidesusefullibrariesforiot.3) itssecurityfeaturesenhanceiotiotsystemsafety.hormormory.hormory.hustupletety.houghmormory

Java에서 플랫폼 별 문제를 발견 한 시나리오와 해결 방법을 설명하십시오.Java에서 플랫폼 별 문제를 발견 한 시나리오와 해결 방법을 설명하십시오.May 03, 2025 am 12:21 AM

thejava.nio.filepackage.1) withsystem.getProperty ( "user.dir") andtherelativeatthereplattHefilePsiple.2) thepathtopilebtoafne 컨버터링 주제

개발자를위한 Java의 플랫폼 독립성의 이점은 무엇입니까?개발자를위한 Java의 플랫폼 독립성의 이점은 무엇입니까?May 03, 2025 am 12:15 AM

Java'SplatformIndenceSnictIficantIficantBecauseItAllowsDeveloperstowRiteCodeOnceAntOnitonAnyplatformwithajvm.이 "WriteOnce, Runanywhere"(WORA) 접근자 : 1) 교차 플랫폼 컴퓨팅 성, DeploymentAcrossDifferentoSwithoutissswithoutissuesswithoutissuesswithoutswithoutisssues를 활성화합니다

다른 서버에서 실행 해야하는 웹 애플리케이션에 Java를 사용하는 장점은 무엇입니까?다른 서버에서 실행 해야하는 웹 애플리케이션에 Java를 사용하는 장점은 무엇입니까?May 03, 2025 am 12:13 AM

Java는 크로스 서버 웹 응용 프로그램을 개발하는 데 적합합니다. 1) Java의 "Write Once, Run Everywhere"철학은 JVM을 지원하는 모든 플랫폼에서 코드를 실행합니다. 2) Java는 Spring 및 Hibernate와 같은 도구를 포함하여 개발 프로세스를 단순화하는 풍부한 생태계를 가지고 있습니다. 3) Java는 성능 및 보안에서 훌륭하게 성능을 발휘하여 효율적인 메모리 관리 및 강력한 보안 보증을 제공합니다.

JVM은 Java의 'Write Once, Run Aloneeringly'(Wora) 기능에 어떻게 기여합니까?JVM은 Java의 'Write Once, Run Aloneeringly'(Wora) 기능에 어떻게 기여합니까?May 02, 2025 am 12:25 AM

JVM은 바이트 코드 해석, 플랫폼 독립 API 및 동적 클래스 로딩을 통해 Java의 Wora 기능을 구현합니다. 1. 바이트 코드는 크로스 플랫폼 작동을 보장하기 위해 기계 코드로 해석됩니다. 2. 표준 API 추상 운영 체제 차이; 3. 클래스는 런타임에 동적으로로드되어 일관성을 보장합니다.

최신 버전의 Java는 플랫폼 별 문제를 어떻게 해결합니까?최신 버전의 Java는 플랫폼 별 문제를 어떻게 해결합니까?May 02, 2025 am 12:18 AM

JAVA의 최신 버전은 JVM 최적화, 표준 라이브러리 개선 및 타사 라이브러리 지원을 통해 플랫폼 별 문제를 효과적으로 해결합니다. 1) Java11의 ZGC와 같은 JVM 최적화는 가비지 수집 성능을 향상시킵니다. 2) Java9의 모듈 시스템과 같은 표준 라이브러리 개선은 플랫폼 관련 문제를 줄입니다. 3) 타사 라이브러리는 OpenCV와 같은 플랫폼 최적화 버전을 제공합니다.

JVM이 수행 한 바이트 코드 검증 프로세스를 설명하십시오.JVM이 수행 한 바이트 코드 검증 프로세스를 설명하십시오.May 02, 2025 am 12:18 AM

JVM의 바이트 코드 검증 프로세스에는 네 가지 주요 단계가 포함됩니다. 1) 클래스 파일 형식이 사양을 준수하는지 확인, 2) 바이트 코드 지침의 유효성과 정확성을 확인하고 3) 유형 안전을 보장하기 위해 데이터 흐름 분석을 수행하고 4) 검증의 철저한 성능 균형을 유지합니다. 이러한 단계를 통해 JVM은 안전하고 올바른 바이트 코드 만 실행되도록하여 프로그램의 무결성과 보안을 보호합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)